如何更新Mongoose中的subdoc数据

时间:2015-01-21 18:41:03

标签: node.js get mongoose put

我正在尝试更新user.task.fixitItem,其中任务架构嵌入在用户架构中。

使用此get,

app.get('/api/tasks/:id/edit', isAuthenticated, function (req, res) {
  console.log('*** testing route GET /api/tasks/:id/edit', req.params);

  User.findOne({'task._id': req.params.id})
    .select('task.$')
    .exec(function(err, user) {
      if(!user) {
        res.statusCode = 404;
        return res.send({ error: 'Not found' });
      }
      if(!err) {
        return res.render('tasks/edit', {task: user.task[0] });
      } else {
        res.statusCode = 500;
        console.log('Internal error(%d): %s', res.statusCode, err.message);
        return res.send({ error: 'Server error' });
      }
    }
  );

});

如何编写put以更新数据?

1 个答案:

答案 0 :(得分:0)

您需要将更新方法与$ set

一起使用
User.update(
  { 'task._id': req.params.id }, 
  { $set: { 'task.$.fixitItem': 'new value' }},
  function(err, user) {

  }
 );