我試圖設置Flight
對象的_docs
屬性,使用從我的貓鼬查詢中返回的文檔,然後定義兩個基於_docs
屬性,但我無法做到這一點,因爲它發生異步。我已經嘗試過回調,承諾和NPM異步,但我沒有得到它的工作。在構造函數中使用mongoose.find()方法設置javascript對象屬性
我對JavaScript比較陌生,並且有一些問題需要正確理解異步概念。我正在使用node.js.
這裏就是我想要做的事:
var mongoose = require('mongoose');
mongoose.connect('mongodb://*******:******@localhost:27017/monitoring');
var db = monk('localhost:27017/monitoring', {username: '********',password: '*******'});
var VolDoc = require('./model/voldoc.js');
var Flight = function(flightId) {
this._flightId = flightId;
this._docs = VolDoc.find({_id: flightId}, {}, function(e, docs) {
return docs; //this._docs should be the same than docs!
//here or outside of the query i want do define a BEGIN and END property of the Flight Object like this :
//this._BEGIN = docs[0].BEGIN;
//this refers to the wrong object!
//this._END = docs[0].END;
});
//or here : this._BEGIN = this._docs[0].BEGIN;
//this._END = this._docs[0].END
};
var flight = new Flight('554b09abac8a88e0076dca51');
// console.log(flight) logs: {_flightId: '554b09abac8a88e0076dca51',
//_docs:
//and a long long mongoose object!!
}
我試過很多不同的方式。所以當它不返回貓鼬對象時,我只在對象中得到flightId
,其餘的是undefined
,因爲程序繼續進行而不等待查詢完成。
有人可以幫我解決這個問題嗎?
使用事件調度和監聽器在異步調用的情況下。 –
你需要承諾。 –