mongoose查询结果无法与数据对象一起导出

时间:2014-08-06 00:05:19

标签: javascript node.js mongodb mongoose promise

我有一个猫鼬查询 我想用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按登录控制台屏幕,但无法导出更新的数据。 为什么不能这样做? 请帮助我,提前谢谢。

1 个答案:

答案 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});
                }
            });
        });
    });
});