1
Visit.js使用async.js - 請注意,folloup.id指0或 「n」 訪問(如樹)與node.js的
var visitSchema = new Schema({
code : {type: String, trim: true, required: false, default: ""},
Client : {
id: {type: Schema.Types.ObjectId, ref: 'Client'},
},
attendant : [{
name : {type: String, trim: true, required: false, default: ""},
}],
followup : [{
id : {type: Schema.Types.ObjectId, ref: 'Visit'}
}],
});
Client.js
var clientSchema = new Schema({
name: {type: String, trim: true, required: false, default: ""}
});
所以,我試過這樣做,但它不起作用。爲什麼不?
Visit.find(function(err, visits) {
var visitCards = new Array();
async.eachSeries(visits, function(visit, callback) {
var visitCard = new VisitCard();
async.series([
function(callback){
Client.findById(visit.Client.id, function(err, client) {
visitCard.client = client.name;
callback();
});
},
function(callback){
visit.followup.forEach(function(followup){
Client.findById(followup.Client.id, function(err, lfollowup) {
var pfollowup = new visitCard.followup();
...
visitCard.followup.push(pFollowup);
callback();
});
});
}
],
function(err, results){
...
visitCards.push(visitCard);
});
},
function(err){
res.render('visits/index', { visitCards: visitCards});
});
});
看來:後
客戶端的回調回報 「async.eachSeries(訪問,功能(參觀,回調)」 執行
「visit.followup.forEach」 客戶端之前完成。 findById執行。
非常感謝Subburaj。 – shibata