我有一个用户集合。
当用户处于活动状态时,应从集合中删除 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'});
})
};
提前致谢。
答案 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'});
});
我希望这会对你有所帮助。感谢。