如果我正在更新所有参数,它工作正常,但如果我正在更新 单独任何参数,然后其他参数变为null。 我不知道如何处理这种情况 我希望如果我更新一个参数,它不应该影响其他参数 属性。
router.put('/session/addActivity/:sessionID',function(req,res){
Session.findOne({_id:req.params.sessionID},function(err,session){
if(err){
return res.send(err);
}
if(session){
session.qanda.isEnable = req.body.qanda_enabled;
session.qanda.isModerate = req.body.qanda_moderation;
session.qanda.isCommentEnable = req.body.qanda_comments;
session.qanda.isAnonymousResponse = req.body.qanda_anonymousResponse;
session.poll.isEnable = req.body.poll_enabled;
session.poll.isMultiSelect = req.body.poll_MultiSelect;
session.poll.answerLimit = req.body.poll_answerLimit;
session.pulse.isEnable = req.body.pulse_enabled;
session.pulse.isAnonymousResponse = req.body.pulse_anonymousResponse;
session.pulse.votesLimitPerUser = req.body.pulse_votesPerUser;
session.save(function(err,session){
if(err){
return res.send(err);
}
else{
res.json(session);
}
});
}
})
});
答案 0 :(得分:0)
问题是,无论req.body
中的数据是否设置,您都明确设置参数。
因此,如果未设置(null),则会清除session
对象上的相应属性。
排除这种情况的唯一方法是首先明确检查req.body
对象上的每个参数:
if("undefined" !== typeof req.body.qanda_enabled){
session.qanda.isEnable = req.body.qanda_enabled;
}
if("undefined" !== typeof req.body.qanda_moderation){
session.qanda.isModerate = req.body.qanda_moderation;
}
if("undefined" !== typeof req.body.qanda_comments){
session.qanda.isCommentEnable = req.body.qanda_comments;
}
if("undefined" !== typeof req.body.qanda_anonymousResponse){
session.qanda.isAnonymousResponse = req.body.qanda_anonymousResponse;
}
//etc.....