Подтвердить что ты не робот

Легкий способ хранения JSON под Node.js

Я ищу супер-простой способ постоянного хранения одного массива JSON под Node.js. Это не должно иметь никаких специальных функций. Я просто хочу поместить туда объект JSON и прочитать его при следующем перезапуске сервера.

(Такие решения, как MongoDB и CouchDB, кажутся излишними для этой цели.)

4b9b3361

Ответ 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.

Ответ 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. Хотя я сам не пробовал, я подумал, что должен добавить его здесь для полноты.