1

node-webkit アプリケーションでデータのストレージとして NeDB を使用しようとしています。次の名前の単一のコレクションがありconfig.dbます。

var Datastore = require('nedb')
  , path = require('path')
  , db = new Datastore({ filename: path.join(require('nw.gui').App.dataPath, 'config.db') });

ユーザーが node-webkit アプリケーションを初めて開いたとき、次のconfig.dbようなデフォルト データが必要です。

{
   color: "red",
   font: 'bold'
   ...
}

NeDB にはデフォルト データを提供するオプションがまだありませんか? config.dbまたは、空の場合 (ユーザーが node-webkit アプリケーションを初めて開いた場合)に保存する最善の方法は何ですか?

4

2 に答える 2

1

私が知る限り、NeDB には初期データを作成するオプションがありません。

これを実現する最も簡単な方法は、データがあるかどうかを単純にクエリすることだと思います。カウント ドキュメントが を返した場合0、明らかに初期データがまだ保存されていないため、ここで保存する必要があります。

このチェックをアプリケーションのスタートアップ コードに含めると、最初の実行時にデータが自動的に初期化され、その後は何も実行されません。

于 2014-11-28T18:59:11.143 に答える
1

同様の解決策を探しているときに、この質問に出くわしました。最終的に得たものを共有したいと思いました(これはモジュールです):

var fs = require("fs");

module.exports = function (app) {
  var customizationService = app.service("customization");

  fs.readFile("./db/customization", "utf8", function (err, data) {
    if (err) {
      return console.log(err);
    }

    if (data) {
      // Sweet, carry on
    } else {
      var customOptions = {
        SiteTitle: "VendoMarket",
        SiteTagline: "The freshest eCommerce platform around"
      };

      // Save data to the locations service
      customizationService.create(customOptions);
    }
  });
};

そして、私のapp.jsファイルで:

//--------------------------------------
//  Initialize
//--------------------------------------

var vendoInit = require("./src/init");
vendoInit(app);

(私のapp.jsファイルは私のプロジェクトのベースにあり、そのsrc隣のフォルダーです)

于 2016-04-26T23:50:25.680 に答える