在保存文档时按下子文档中的数组的所有元素

时间:2017-10-31 13:54:32

标签: node.js mongoose

我想推送数组元素来创建子文档,

我的架构

var chatGroup = new Schema({

name : {
    type : String,
    default : null 
},
members: {
    type : [subSchemaForMember]
},

},{collection:' chatGroup' });

var subSchemaForMember = new Schema({

user_id   : {type : Schema.Types.ObjectId , ref : 'user'}},{_id : false});

我保存文档的查询是

var chatGroup = new ChatGroup({

        name       : req.body.name,
        image      : req.body.image,
        created_by : req.body.celebrity_id,
        $pushAll   : {'members' : req.body.members}
    })

req.body.memebers = [' someid',' someid',' someid']

请帮助我想要没有任何循环

1 个答案:

答案 0 :(得分:0)

我没有看到您实际保存文档,只在构造函数上调用new。您需要显式调用save。在构造它之后在对象上。有关创建文档的文档,请参阅此处:http://mongoosejs.com/docs/models.html

此外,$pushAll的使用仅适用于mongodb中已有对象的情况,该对象具有现有值,并且您希望保留这些值并将其他值推送到数组上(因此在您的示例中,您可以只需将数组分配给members)。

另外值得注意的是,当前的mongoose文档表明$pushAll已被弃用,您应该$push$each一起使用,但适用相同的规则,请参阅此处:

https://docs.mongodb.com/manual/reference/operator/update/push/#append-multiple-values-to-an-array