我希望只有一个端点可以做两件事来简化前端工作。此端点可以更新年龄和等级,其中一个可以是可选的。如果没有年龄或成绩,下面的代码将失败。如何解决这个问题?
//update age and grade
app.put('/user', function(req, res) {
var date = req.body.date,
userId = req.body.userId,
age = req.body.age,
grade = req.body.grade;
Trucks.update({'date':date, 'id': userId}, {'$set': {
'userData.$.age': age,
'userData.$.grade': grade
}}, function(err, response){
if (err) {
console.log(err)
return res.status(500).json({
error: 'Error update update user\'s data'
});
}else{
res.send(response);
}
})
});
我可以在更新对象中添加条件吗?
{
age ? "'userData.$.age': age", : ''
grade ? "'userData.$.grade' : grade" : ''
}
嗯不这么认为..
答案 0 :(得分:1)
例如,您可以在发送到mongoose之前准备查询。
//update age and grade
app.put('/user', function(req, res) {
var date = req.body.date,
userId = req.body.userId,
age = req.body.age,
grade = req.body.grade;
var query = {};
if(age){
query['userData.$.age']= age;
}
if(grade){
query['userData.$.grade']= grade;
}
Trucks.update({'date':date, 'id': userId}, {'$set': query}, function(err, response){
if (err) {
console.log(err)
return res.status(500).json({
error: 'Error update update user\'s data'
});
}else{
res.send(response);
}
})
});