2016-08-06 8 views
0

私は自己定義されたオブジェクトにnedbモジュールをカプセル化:
nedb:find()関数からドキュメントを取得するには?

var Record = function() { 
 
    var Datastore = require('nedb'); 
 
    this.db = new Datastore({filename: 'record'}); 
 
    this.db.loadDatabase(); 
 
};

そして私は、データベース内のすべてのオブジェクトを取得するために自分自身の関数を定義したい:

Record.prototype.getItems = function() { 
 
    var items = null; 
 
    this.db.find({}, function(err, docs) { 
 
    items = docs; 
 
    }); 
 
    return items; 
 
};

しかし、変数 "items"は変数 "docs"に割り当てることはできず、常に "null"です。 JavaScriptの非同期性が原因であることが分かります。
しかし、どのように変数 "docs"を出すことができますか?

答えて

0

あなたはそれがこのように、準備ができたときにデータを取得するコールバック関数を必要とする:

Record.prototype.getItems = function(callback) { 
    this.db.find({}, callback); 
}; 

そして、それを使用する:

const record = new Record(); 
record.getItems((err, docs) => { 
    if (err) return handleError(err); 
    console.log(docs); 
}); 
関連する問題