我可以将参数传递给Mongoose中的findbyid()函数

时间:2015-07-10 14:00:18

标签: node.js express mongoose

我有一个变量 user ,我想在Express更新请求中推送到用户数组。

router.put( '/projectUser/:id', function( req, res ) {
    var projectid = req.params.id;
    var users = req.body.project.users;
    var user = req.body.user;


    return ProjectProfile.findById( projectid, function( err, project, user ) {
        console.log(user);
        console.log(project);

        project.users.push(user); 

        return project.save( function( err ) {
            if( !err ) {
                console.log( 'Project Users updated' );
                return res.send( project );
            } else {
                console.log( err );
                return res.send('ERROR');
            }
        });
    });
});

在示例中,变量user将被推送到users数组中,因为它不在范围内。

无论如何将变量user作为参数传递给findById函数?

1 个答案:

答案 0 :(得分:2)

无法完全理解这个问题,但我认为您正在尝试将userId值(req.body.user)添加到ProjectProfile模型的users(Array)属性中。是吗?

如果是这样的话,我相信你的代码看起来应该是这样的(我不考虑验证,错误检查,重复检查等等,所以仅用作参考)

router.put('/projectUser/:id', function(req, res) {
  return ProjectProfile.findById(req.params.id, function(err1, project) {
    project.users.push(req.body.user);
    return project.save(function(err2) {
      return res.send('OK');
    });
  });
});

请检查Model#findById个文档,您的save()回调需要2个参数,而不是3个。