Легкий способ хранения JSON под Node.js
Я ищу супер-простой способ постоянного хранения одного массива JSON под Node.js. Это не должно иметь никаких специальных функций. Я просто хочу поместить туда объект JSON и прочитать его при следующем перезапуске сервера.
(Такие решения, как MongoDB и CouchDB, кажутся излишними для этой цели.)
Ответы
Ответ 1
Почему бы не записать файл?
// 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");
Ответ 2
Попробуйте NeDB: https://github.com/louischatriot/nedb
"Встроенная постоянная база данных для Node.js, написанная в Javascript, без зависимости (за исключением модулей npm, конечно). Вы можете подумать об этом как о SQLite для проектов Node.js, которые могут быть использованы с простой запрос. API - это подмножество MongoDB. Вы можете использовать его как постоянный или встроенный в хранилище данных.
Ответ 3
Я нашел библиотеку с именем json-fs-store, чтобы сериализовать объект JavaScript в JSON в файле и получить его позже.
При извлечении файла с помощью метода store.load
(не описанного в документах на данный момент) он анализируется с помощью JSON.parse
, который лучше, чем выполнение require
, как в другом ответе:
- вы получаете правильную обработку ошибок, когда содержимое искажено
- Если кому-то удалось прокрасть код JavaScript в файл, это приведет к ошибке синтаксического анализа вместо выполняемого JS.
Ответ 4
Если вы ищете производительность, рассмотрите: LokiJS
https://www.npmjs.com/package/lokijs
http://lokijs.org/#/
Ответ 5
Если вам нужно простое хранилище данных без внешних процессов, очень высокой и стабильной производительности, вам может понравиться Rocket-store
Это очень просто в использовании; Включите модуль, и вы можете начать вставлять записи прямо сейчас.
Он имеет три основных метода: put, get и delete (и некоторые специальные методы и настройки параметров)
Пример:
// 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 вставок/сек. (ПК)
Вы получаете простые последовательности, автоинкремент и другие незначительные удобства, но это об этом. Ничего фантастического.
Мне это очень нравится, когда мне нужны простые решения для хранения данных, но я также очень предвзят, как автор;)
Ответ 6
Вы можете просто сохранить JSON-данные в простом текстовом файле и прочитать их при перезапуске сервера.
const data = require("yourarrayfile.json");
а затем работать с ним, как обычно.
Ответ 7
Хотя у LokiJS и NeDB больше пользователей, я просто наткнулся на TaffyDB. Хотя я сам не пробовал, я подумал, что должен добавить его здесь для полноты.