避免在PUT中使用Mongo和Express进行额外查询

ben*_*e89 1 mongoose mongodb node.js express

我用Mongoose/Express更新Mongo中的记录:

app.put('/loggedIn/:id', function(req, res) {
  if (req.user._id == req.params.id) {
    User.update({
      _id: req.user._id
    }, {
      $set: {
        interests: req.body.interests
      }
    }, function(err, num) {
      if (err) return err;
      User.findById(req.user._id, '_id username interests', function(err, user) {
        if (err) return;
        res.json(user);
      });
    });
  } else {
    console.log('fail');
  }

});
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免在回调中做第二个查询update(),似乎很多只是为了返回新更新的文档.

And*_*ren 6

如果您始终只更新一个文档,则可以使用findByIdAndUpdate(或findOneAndUpdate),如果找到该文档,则会更新文档并将其返回给回调:

app.put('/loggedIn/:id', function(req, res) {
  if (req.user._id == req.params.id) {
    User.findByIdAndUpdate(req.user._id, {
      $set: {
        interests: req.body.interests
      }
    }, function(err, user) {
      if (err) return;
      res.json(user);
    });
  } else {
    console.log('fail');
  }

});
Run Code Online (Sandbox Code Playgroud)