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

时间:2013-02-18 15:04:23

标签: javascript json node.js database

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

(像 MongoDB CouchDB 这样的解决方案对于此目的而言似乎都有点过分。)

9 个答案:

答案 0 :(得分:70)

为什么不写入文件?

// 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");

答案 1 :(得分:7)

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

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

答案 2 :(得分:5)

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

通过store.load方法检索文件时(目前未在文档中描述),使用JSON.parse进行解析,这比在另一个中执行require更好回答:

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

答案 3 :(得分:3)

如果您正在寻找性能,请考虑:LokiJS

https://www.npmjs.com/package/lokijs

http://lokijs.org/#/

答案 4 :(得分:2)

您可以将JSON数据保存在一个简单的文本文件中,并在服务器重启时读取它。

const data = require("yourarrayfile.json");

然后像往常一样使用它。

答案 5 :(得分:2)

如果您需要简单的数据存储,没有外部过程,非常高且稳定的性能,则可能需要 Rocket-store

使用非常简单;包括该模块,您就可以立即开始插入记录。

它有三种主要方法:放入获取删除(以及一些特殊的方法和选项设置)

示例:

// collection/table = "cars", key = "Mercedes"
result = await rs.post("cars", "Mercedes", {owner: "Lisa Simpson", reg: "N3RD"});

// Get all records from "cars" collection
result = await rs.get("cars","*");

// Delete records in collection "cars" where keys match "*cede*"
result = await rs.delete("cars","*cede*");

Rocket-store 依靠底层文件系统的现金来优化速度并可以处理数百万条记录。

在插入时,它很容易比关系数据库快100倍。通常为每秒70.000次插入。 (PC)

您将获得简单的序列,自动递增和其他一些次要的便利,但有关这些。没有什么花哨。

每当我需要一个简单的存储解决方案时,我都非常喜欢它,但是作为作者,我也非常有偏见;)

答案 6 :(得分:0)

虽然LokiJS和NeDB都有更多用户,但我只是遇到了TaffyDB。虽然我自己没有尝试过,但我认为我应该在这里添加它以保证完整性。

答案 7 :(得分:0)

尝试LowDB

Lowdb是一个由Lodash支持的小型本地JSON数据库(支持Node,Electron和浏览器)。如果您了解Lodash,那么您已经知道如何使用Lowdb。

答案 8 :(得分:0)

建议节点的 fs 系统的用户我必须同意。如果 mongoDB 等已经过大了,其他人都在建议对我来说似乎整体上的东西。简单的语言环境存储或节点的 fs 库。

我记得当我开始我的 Web 开发之旅时,我对通过 mongoDB 之类的东西学习持久数据存储技术还不够了解。但是 node 的 fs 库对我的一些早期应用程序起到了作用。即使重新启动本地服务器,所有数据都保持不变