我创建了一个API,我正在更新一些参数

时间:2017-05-03 10:42:37

标签: node.js

如果我正在更新所有参数,它工作正常,但如果我正在更新     单独任何参数,然后其他参数变为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);
                }
            });
        }
    })
});

1 个答案:

答案 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.....