我有一个猫鼬查询 我想用count查询的结果更新Entry对象的“entry_count”属性 但我无法更新导出的数据。
我可以获取数据但无法导出
这是我的查询代码:
getTopicList: function(limit) {
var deferred = promise.pending();
// create mongoose model from schemas
var Topic = mongoose.model('Topic');
var Entry = mongoose.model('Entry');
var queryDate = main.getCurrentDateString();
// get entry count created in today
Entry
.count({createdAtStr : queryDate})
.exec(function(err, entryCount) {
// get last valid topics [ limit -> arg0 ]
Topic
.find({ status : 1 })
.limit(limit)
.sort('-updatedAt')
.exec(function(err, data) {
_.each(data, function(single) {
Entry.
count({topic : single._id})
.exec(function(err, entryCnt) {
util.log(entryCnt);
single.entry_count = entryCnt;
});
});
deferred.fulfill({"status":true,"data":data});
});
});
return deferred.promise;
}
我可以使用util按登录控制台屏幕,但无法导出更新的数据。 为什么不能这样做? 请帮助我,提前谢谢。
答案 0 :(得分:1)
您很快就会履行承诺。在deferred.fulfill
内的所有exec
来电完成之前,您不应该致电_.each
。
类似于:
Entry
.count({createdAtStr : queryDate})
.exec(function(err, entryCount) {
// get last valid topics [ limit -> arg0 ]
Topic
.find({ status : 1 })
.limit(limit)
.sort('-updatedAt')
.exec(function(err, data) {
var numleft = data.length; // Count of outstanding count queries
_.each(data, function(single) {
Entry.
count({topic : single._id})
.exec(function(err, entryCnt) {
util.log(entryCnt);
single.entry_count = entryCnt;
if (--numleft === 0) {
// None left, so fullfill the promise.
deferred.fulfill({"status":true,"data":data});
}
});
});
});
});