如何推入数组类型条目

时间:2018-01-22 11:14:47

标签: node.js mongoose mongoose-schema

我试图将变量推送到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的正确函数。

1 个答案:

答案 0 :(得分:1)

默认情况下,如果没有指定任何内容,mongoose将使用$set,这就是整个数组被替换的原因。

您需要的是$push

尝试使用以下内容:

Competition.update(query, {$push:{"joined_users" : req.body.userId}})