如何更新行并取消设置某些字段

时间:2018-05-26 05:39:23

标签: mongodb mongoose

我有一个用户集合。

  • 的firstName。
  • lastName的。
  • deactivatedAt。
  • deactivatedBy。
  • 状态(0:无效,1:有效)。

当用户处于活动状态时,应从集合中删除 deactivatedAt和deactivatedBy

当用户停用时, deactivatedAt和deactivatedBy 应该在集合中可用。

我执行以下操作。

1→当我取消激活用户时,我设置 deactivatedAt和deactivatedBy

2→当我激活用户时,应该从集合中删除 deactivatedAt和deactivatedBy

我的行动。

module.exports.deactive = function(req, res) {
  let userId = req.params.userId;
  let params = {
    status: 0,
    deactivatedAt: new Date(),
    deactivatedBy: {
      userId: req.payload._id,
      firstName: req.payload.firstName,
      lastName: req.payload.lastName
    }
  };
  User.findByIdAndUpdate(userId, params, {new: true})
    .then(result => {
      sendJsonResponse(res, 200, {message: 'User successfully deactivated'});
    })
    .catch(err => {
      sendJsonResponse(res, 500, {message: 'Error occurred'});
    })
};

module.exports.active = function(req, res) {
  let userId = req.params.userId;
  let params = {
    status: 1
  };


  //------------ in here in need to remove the deactivatedAt and deactivated By


  User.findByIdAndUpdate(userId, params)
    .then(result => {
      sendJsonResponse(res, 200, {message: 'User successfully activated'});
    })
    .catch(err => {
      sendJsonResponse(res, 500, {message: 'Error occurred'});
    })
};

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你应该在update()中使用$ unset来删除集合中的字段

let params = { 
     $unset : {
          deactivatedAt : 1,
          deactivatedBy : 1
     }
};
User.update({_id : user_id}, params)
.then(result => {
    sendJsonResponse(res, 200, {message: 'User successfully activated'});
})
.catch(err => {
    sendJsonResponse(res, 500, {message: 'Error occurred'});
});

当用户未处于活动状态时,您可以再次使用 $ set

设置值
let params = { 
     $set : {
          deactivatedAt : <value>,
          deactivatedBy : <value>
     }
};
User.update({_id : user_id}, params)
.then(result => {
    sendJsonResponse(res, 200, {message: 'User successfully deactivated'});
})
.catch(err => {
    sendJsonResponse(res, 500, {message: 'Error occurred'});
});

我希望这会对你有所帮助。感谢。