带有byId()的NodeJS额外字段;

时间:2015-12-28 09:30:16

标签: node.js mongodb mongoose

目前我正在开发一个nodeJS API,我有一个模型,该模型可以有媒体项目,您可以在我的代码中看到:

router.get('/:id', function(req, res, next) {
qbuilder.byId(Model,req)
    .exec(
    function(err,model){
        Media.count({'model.entity': model._id}, function(err, media){
            if(media){
                console.log(media);
            }
        });

        model.total_media = 15;

        responders.sendJsonOrError(err, res, model, next);
    });
});

问题是,代码:

 model.total_media = 15;

没有出现在响应者中,这很奇怪,因为如果我用以下方法清理对象:model = [];它返回空。

一旦我将lean()添加到我的查询中,它会在响应者中返回total_media,但是当我这样做时,我会遇到问题:

router.get('/:id', function(req, res, next) {
qbuilder.byId(Model,req)
    .exec(
    function(err,model){
        Media.count({'model.entity': model._id}, function(err, media){
            if(media){
                model.total_media = media;
            }
        });

        responders.sendJsonOrError(err, res, model, next);
    });
});

它没有填充total_media,还有其他方法可以正确地执行此操作吗?

1 个答案:

答案 0 :(得分:1)

试试这个。在您指定值之前,响应正在发送。

router.get('/:id', function(req, res, next) {
qbuilder.byId(Model,req)
.lean().exec(
function(err,model){
    Media.count({'model.entity': model._id}, function(err, media){
        if(media){
            model.total_media = media;

        }
    responders.sendJsonOrError(err, res, model, next);
    });


});
});