web-dev-qa-db-ja.com

Node.jsの下にJSONを保存する簡単な方法

[〜#〜] json [〜#〜]配列をNode.jsの下に永続的な方法で格納するための非常に簡単な方法を探しています。特別な機能は必要ありません。そこにJSONオブジェクトを入れて、次のサーバーの再起動時にそれを読み取れるようにするだけです。

MongoDBCouchDBのようなソリューションは、どちらもこの目的には過剰すぎるように見えます。)

36
johnny

ファイルに書き込みませんか?

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

NeDBを試してください: https://github.com/louischatriot/nedb

「Javascriptで記述された、依存関係のないNode.jsの組み込み永続データベース(もちろんnpmモジュールを除く)。Node.jsプロジェクトのSQLiteと考えることができ、単純なrequireステートメントで使用できます。API MongoDBのサブセットです。これを永続的またはメモリ内のみのデータストアとして使用できます。」

7
Ray Hulha

JavaScriptオブジェクトをファイル内のJSONにシリアル化し、後で取得するために json-fs-store という名前のライブラリを見つけました。

store.loadメソッド(現時点ではドキュメントに記載されていません)を介してファイルを取得する場合、それはJSON.parseで解析されます。これは、他の回答のようにrequire

  • コンテンツの形式が正しくない場合、適切なエラー処理が行われます
  • 誰かがJavaScriptコードをファイルに忍び込ませた場合、JSが実行されるのではなく、解析エラーが発生します。
5
chiborg

外部プロセスがなく、非常に高い安定したパフォーマンスを備えたシンプルなデータストレージが必要な場合は、Rocket-store

使い方はとても簡単です。モジュールを含めると、すぐにレコードの挿入を開始できます。

3つの主要なメソッドがあります:putget、および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挿入/秒。 (PC)

単純なシーケンス、自動インクリメント、その他の小さな便利さが得られますが、それについてはそうです。派手なものは何もありません。

シンプルなストレージソリューションが必要なときはいつでも気に入っていますが、著者としても非常に偏見があります;)

3
Simon Rigét

パフォーマンスを探している場合は、LokiJSを検討してください。

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

http://lokijs.org/#/

3
swapnilagarwal

JSONデータを単純なテキストファイルに保存し、サーバーの再起動時に読み取ることができます。

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

その後、通常どおりに使用します。

2
Soroush Hakami

LokiJSとNeDBの両方がより多くのユーザーを抱えているように見えますが、私は TaffyDB に出会いました。自分で試したことはありませんが、完全を期すためにここに追加する必要があると考えました。

0
thom_nic