我试图将变量推送到Array
模型中的Mongoose
类型。
var CompetitionSchema = new Schema({
joined_users:{type: Array, default:[]}
});
我需要将多个用户添加到此Array
我有以下路线:
//Add User to competition
router.post('/c/:competId/user', (req, res) => {
query = {_id : req.params.competId}
Competition.update(query, {"joined_users" : req.body.userId}).exec((err, compet)=>{
if(err) throw err;
if(!compet){
res.json({success: false, message:'Could not find compet'});
}else if(compet){
res.json({success: true, message:'All good!'})
}
})
});
但当然它每次都会替换Array的第一个元素。我找不到将每个user
附加到joined_users
的正确函数。
答案 0 :(得分:1)
默认情况下,如果没有指定任何内容,mongoose将使用$set
,这就是整个数组被替换的原因。
您需要的是$push
。
尝试使用以下内容:
Competition.update(query, {$push:{"joined_users" : req.body.userId}})