小编mic*_*mcd的帖子

从node.js中删除文件流中的最后一个字符(fs模块)

使用node.js,我试图构建一个对象数组并将它们写入文件.为此,我使用内置的fs库.

在调用之后 var file = fs.createWriteStream('arrayOfObjects.json');,file.write('[')我运行了几个异步函数,最终附加了这样的对象:

file.write(JSON.stringify(objectToAppend) + ',\n')

我能确定当所有的物体已经停止追加,而这正是我跑file.write(']')file.end().我的问题是将最后一个逗号添加到最后一个对象的末尾会导致JSON无效.

由于脚本的异步性质,很难确定最后一个对象的创建位置和时间,因此我想知道是否有一种方法可以从文件流中删除或删除字符.如果是这样,我可以在添加最后一个']'字符之前执行此操作.

我可以手动执行此操作,但我希望将此管道传输到另一个应用程序.我想过使用唯一的解决方案fs.truncate()功能然而,这似乎不为文件流工作,既不file.lengthfile.length()会给我的内容的长度,因为它不是一个字符串,因此很难确定如何或在哪里截断文件.

现在我刚刚添加'{}]'到数组的末尾以使其成为有效的JSON,但是这个空对象可能会在以后引起一些问题.

请注意:我在此流中编写的对象数组非常大,所以我宁愿不结束流并重新打开文件.

javascript string json fs node.js

10
推荐指数
2
解决办法
5074
查看次数

SwiftUI:清除模式状态或重新初始化

我有一个SwiftUI模式,我想清除状态或重新初始化。考虑到该模态可以打开可能具有某种状态的其他模态这一事实,首选重新初始化。

这是一个简单的示例:

import SwiftUI

struct OtherView: View {
    @State var otherViewState: String = ""

    var body: some View {
        TextField($otherViewState, placeholder: Text("Demo Text Input"))
    }
}

struct Demo: View {
    @State var showModal: Bool = false

    var modal: Modal {
        Modal(OtherView(), onDismiss: { self.showModal = false })
    }

    var body: some View {
        Button(action: { self.showModal = true }) {
            Text("Toggle Modal")
        }
        .presentation(self.showModal ? self.modal : nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

无论如何关闭OtherView,我都希望在清除文本状态后重新打开它,并要求OtherView可以自己打开模式。clear在OtherView结构本身上添加方法始终是一种选择,但我认为它不是可维护的方法。

以下是简化问题的视频: 演示版

modal-dialog ios swift swiftui

9
推荐指数
1
解决办法
681
查看次数

标签 统计

fs ×1

ios ×1

javascript ×1

json ×1

modal-dialog ×1

node.js ×1

string ×1

swift ×1

swiftui ×1