节点.js更新文件中的 JSON 数据

Node.js update JSON data in file

本文关键字:JSON 数据 文件 js 更新 节点      更新时间:2023-09-26

我必须在文件上写入一些JSON数据。某些 JSON 对象必须在程序执行期间更新,并且这些更新必须保存在文件中(例如数组中的对象(。

有没有办法在不重写整个文件的情况下做到这一点?

JSON结构:

{
    "varA": {
        "varA1": value,
        "varA2": value,
    },
    "varB": value,
    "varC": value,
    "varD": value,
    "array": [
        { obj1 },
        { obj2 },
        { obj3 },
    ]
}

如果你想要稍微复杂的文件管理解决方案(但实现起来非常简单(,我会:

    创建一个新文件
  1. ,而不是尝试重写现有文件(每次都使用新文件名(。我建议使用包含时间戳(人类可读或毫秒(的东西。
  2. 并在加载/同步文件时始终查找最新文件
  3. 当您"找到"较新的文件并且它成功读取时,清除旧文件。如果文件未成功读取,则表示发生了某些问题。回退到下一个文件,最好删除坏文件。或者,只需等待新文件成功写入。

这样,您无需担心文件未完全写入等。

如果你有多个文件,我强烈建议你使用MongoDB,因为它正是它的好处。

使用MongoDB,您可以执行以下操作(来自文档(:

   db.books.update( { item: "Divine Comedy" },
             {
               $set: { price: 18 }, // set property value
               $inc: { stock: 5 },   // increment etc field value
             } )
   // add value in array
   db.bios.update(
     { _id: 1 },
     {
        $push: { awards: { award: "IBM Fellow", year: 1963, by: "IBM" } }
     }

(

更新:另外,既然你提到文件实际上是配置,看看Grunt可以做什么。例如,回答这个问题 通过 grunt 任务更新 json 文件中的文件引用