在Node.js下存储JSON的简便方法

joh*_*nny 36 javascript database json node.js

我正在寻找一种在Node.js下以持久方式存储一个JSON数组的超简单方法.它不需要任何特殊功能.我只想在其中放置一个JSON对象,并能够在下次服务器重启时读取它.

(像MongoDBCouchDB这样的解决方案对于这个目的来说似乎都有点过分.)

gus*_*nke 73

为什么不写入文件?

// Writing...
var fs = require("fs");
var myJson = {
    key: "myvalue"
};

fs.writeFile( "filename.json", JSON.stringify( myJson ), "utf8", yourCallback );

// And then, to read it...
myJson = require("./filename.json");
Run Code Online (Sandbox Code Playgroud)

  • 不,我没有声称.这里的问题恕我直言总是有两个组成部分:对于要求他们的人和所有那些人在他们输入相关问题后找到他们.此外,我提到的Rails策略与Rails实现的语言没什么关系.它是一般的Web应用程序设计原则.Over - OUT - 就像我说的那样,我刚刚为后代添加了评论,我没有在这种背景下批评你的答案,所以让我们把它留在那里,没有理由变得防守. (3认同)
  • 只需要添加一件事:如果您"需要"该文件,您必须信任其内容.作为数据交换格式的JSON通常不受信任,如果从外部源获取JSON,则始终使用JSON解析方法.我只是这样说是为了防止这个(读取)模式被记住为所有JSON内容的常见模式. (2认同)
  • 是的,但我认为必须在编写之前进行验证,而不是在阅读时进行。 (2认同)
  • 我从未使用过 Ruby,所以我对此没有任何想法 :D 此外,数据的安全性不是问题作者所指定的。 (2认同)

Ray*_*lha 7

试试NeDB:https://github.com/louischatriot/nedb

"Node.js的嵌入式持久性数据库,用Javascript编写,没有依赖性(当然除了npm模块).你可以把它想象成Node.js项目的SQLite,它可以用一个简单的require语句.是MongoDB的一个子集.您可以将它用作持久性或仅在内存中的数据存储区."

  • 给未来访问者的注意事项:上述库最后更新于 2015 年,此后已被正式弃用。 (2认同)

chi*_*org 5

我找到了一个名为json-fs-store的库,用于将JavaScript对象序列化为文件中的JSON,并在以后检索它.

当通过该store.load方法检索文件时(此时未在文档中描述),使用JSON.parse哪个解析它比require在另一个答案中执行类似更好:

  • 当内容格式错误时,您会得到正确的错误处理
  • 如果有人设法将JavaScript代码隐藏到文件中,则会导致解析错误,而不是执行JS.

  • 未来访问者请注意:自 Node v0.4 起,上述库就没有跟上 Node 的步伐,并且应该/不能与当前版本的 Node 一起使用。 (2认同)