Node.jsの下で 1 つのJSON配列を永続的な方法で保存するための非常に簡単な方法を探しています。特別な機能を持つ必要はありません。そこにJSONオブジェクトを入れて、次のサーバーの再起動時にそれを読み取れるようにしたいだけです。
( MongoDBやCouchDBなどのソリューションは、どちらもこの目的には過剰に思えます。)
Node.jsの下で 1 つのJSON配列を永続的な方法で保存するための非常に簡単な方法を探しています。特別な機能を持つ必要はありません。そこにJSONオブジェクトを入れて、次のサーバーの再起動時にそれを読み取れるようにしたいだけです。
( MongoDBやCouchDBなどのソリューションは、どちらもこの目的には過剰に思えます。)
ファイルに書き込んでみませんか?
// 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");
また、読み書きを繰り返し行う必要がある場合は、繰り返し読み込んでいるファイルごとに Node のキャッシュをクリアする必要があります。そうしないと、Node はファイルをリロードせず、代わりに最初のrequire
呼び出しで見たコンテンツを生成します。特定の要求のキャッシュをクリアするのは、ありがたいことに非常に簡単です。
delete require.cache[require.resolve('./filename.json')]
また、(ノード 12 の時点で) CommonJS ではなく ES モジュールを使用している場合、import
ステートメントには対応するキャッシュの無効化がないことに注意してください。代わりに動的 import()を使用すると、インポートは URL から行われるため、インポート文字列の一部としてキャッシュ無効化の形式としてクエリ文字列を追加できます。
または、組み込みのキャッシュを回避するには、require の代わりにfs.readFile()
/を使用します ( promise ベースのコードを明示的または async/await を使用して暗黙的に記述している場合は代わりに使用します)。fs.readFileSync()
fs/promises
fs
NeDB を試す: https://github.com/louischatriot/nedb
「Javascript で書かれた Node.js 用の埋め込み永続データベースで、依存関係はありません (もちろん npm モジュールを除く)。単純な require ステートメントで使用できる Node.js プロジェクトの SQLite と考えることができます。API MongoDB のサブセットです。永続的またはメモリ内のみのデータストアとして使用できます。"
ファイル内の JavaScript オブジェクトを JSON にシリアル化し、後で取得するための json-fs-storeという名前のライブラリを見つけました。
メソッドを介してファイルを取得する場合store.load
(現時点ではドキュメントには記載されていません)、他の回答で like をJSON.parse
実行するよりも優れた方法で解析されます。require
JSON データを単純なテキストファイルに保存し、サーバーの再起動時に読み取ることができます。
const data = require("yourarrayfile.json");
その後、通常どおり操作します。