POST后返回201并创建了节点/ Mongoose .populate()模型

时间:2015-09-17 21:59:06

标签: javascript node.js mongodb mongoose promise

使用POST Post的典型示例,一切似乎都按预期工作,并且它将User ObjectId保存在数据库等中。

返回结果时,我似乎无法通过

来填充用户
Posts.createAsync(req.body)
    .then(saveUpdates(req.body))
    .then(responseWithResult(res, 201));


function saveUpdates(updates) {
    return function (entity) {
        var updated = _.merge(entity, updates);
        return updated.saveAsync()
        .spread(function (updated) {
            return updated;
        });
    };
}

在这里我需要它来重新填充并返回填充Post

的完整User模型
function responseWithResult(res, statusCode) {
    statusCode = statusCode || 200;

    return function (entity) {
        if (entity) {
            // Here's where I've tried just about everything I can think of

            // entity.populate('user') (doesn't work)

            res.status(statusCode).json(entity);
        }
    };
}
  

注意:在GET中一切正常并填充User,但由于某种原因,典型的.populate().execAsync()似乎不适用于此...

Posts.find({ "team" : req.params.id})
    .populate({ path: 'user' })
    .execAsync(function (err, posts) {
        res.json(posts);
});

POST回归中我缺少什么?

模特不是什么花哨的东西,基本上只是:

var PostsSchema = new Schema({
    user : {
        type: Schema.ObjectId, 
        ref: 'User'
    },
    message : String
});

var UserSchema = new Schema({
    name: String,
    // etc etc
});

0 个答案:

没有答案