3

組み込み Linux システムで Node.js Web サーバーを実行しています。認証には現在 Passport の Local Strategy を使用しており、ユーザー アカウント情報は Node スクリプト自体に次のように格納されています。

var users = [
    { id: 1, username: 'bob', password: 'secret', email: 'bob@example.com' }
  , { id: 2, username: 'joe', password: 'birthday', email: 'joe@example.com' }
];

それは機能しますが、ユーザー名とパスワードを別のファイルに保存し、Web ブラウザー インターフェイスを介してユーザーを追加、削除、および変更できるようにしたいと考えています。ユーザー アカウントの保存にデータベース サーバーを使用したくありません。組み込みシステムのオーバーヘッドが大きすぎると感じているからです。

アカウントの更新に役立つ可能性のあるライブラリを使用して、ユーザー アカウントを別のファイルに保存する良い方法を知っている人はいますか?

編集: ノード サーバーは、非常に少数 (おそらく 2 ~ 20) のユーザーを持つ電子ハードウェア上で実行されているため、ユーザー リストの更新を行っている人々が互いに足を踏み入れても問題はないはずです。初期設定後、ユーザー リストはあまり変わりません。

4

3 に答える 3

4

パスワードを平文で保存するのはよくないことだと、おそらくすでにお気づきでしょう。少なくとも、bcryptでハッシュすることをお勧めします。しかし、それは質問の内容ではないので、先に進みます。:)

いくつかのオプションがあります:

  1. JSON.stringifyおよび を使用して、データを手動で読み取り、ディスクに保存しますJSON.parse。データをメモリにロードし、変更されたら、シリアル化してディスクに戻します。
  2. メモリ内ストレージをサポートし、自動的にディスクに永続化する Node モジュールであるPersistanceを使用します (基本的には #1 と同じですが、既にビルドされています。:)
  3. SQLiteを使用すると、RDBS のほとんどの機能が提供されますが、実行中のサーバーを必要とする代わりに、ファイルにシリアル化されます。
于 2012-06-20T20:10:06.593 に答える
3

非常に単純なアプローチは、JSON ファイルから読み取るだけです。更新時に、ファイルに書き込みaccounts.json.(process id).tmp、ファイルの名前を に変更しますaccounts.json。2 つが同時に入ってきた場合、アップデートが失われるという小さなリスクがありますが、それを受け入れることができるかもしれません. (「実際の」値に「実際の」データベースを使用できない場合)。

を使用JSON.stringify(data)して、データ構造を JSONJSON.parse(json)に変換したり、JSON 文字列をファイルからデータ構造に変換したりできます。

サービス/サーバーがブロックできるほど十分に使用されていない場合は、アカウントを読み取ることができます

var data = JSON.parse(fs.readFileSync( file_name ) );
于 2012-06-20T20:05:42.413 に答える
0

私はあなたが使用した 3 つのタグすべてをまったく知りませんが、単純なテキスト ファイル ベースのデータベースについて質問しているあなたの質問に惹かれました。私はまったく異なるバックグラウンドを持っているため、私の回答が無関係であると感じても気にしないでください。

MongoDB を参照してください。これは、大量のドキュメントを扱う場合に非常に役立つドキュメント指向の DBMS です。

MongoDB は BSON を使用します。BSON は、JSON に似ていますが、より表現力に優れたバイナリ オブジェクト形式です。「従来の」RDBMS のようにテーブルにデータを格納するのではなく、動的スキーマを使用して構造化データを BSON 形式で格納する NOSQL データベースです。

魅力的であると思われる場合は、このリンクにアクセスして詳細を確認できます: MongoDb

于 2012-06-20T20:16:40.000 に答える