Node.js 保存文档时,推送子文档中数组的所有元素

Node.js 保存文档时,推送子文档中数组的所有元素,node.js,mongoose,Node.js,Mongoose,我想推送数组元素来创建子文档 我的模式 var chatGroup = new Schema({ name : { type : String, default : null }, members: { type : [subSchemaForMember] }, },{集合:'聊天组'} var subschemaformber=新模式{ user_id : {type : Schema.Types.ObjectId , ref : 'user'}},{_id

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

我的模式

var chatGroup = new Schema({

name : {
    type : String,
    default : null 
},
members: {
    type : [subSchemaForMember]
},
},{集合:'聊天组'}

var subschemaformber=新模式{

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']


请提供帮助我希望在没有任何循环的情况下执行此操作

我看不到您实际保存文档,只在构造函数上调用new。您需要在构建对象后在对象上显式调用save。有关创建文档的文档,请参阅此处:

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

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


子模式成员只是一个字符串吗?至少当你说req.body.members=['someId','someId','someId']?换句话说,它是成员:{type:[string]}?成员:[{user\u id:{type:Schema.Types.ObjectId,ref:'user'}]就像下面的子文档一样,你保存模型了吗?你的示例没有这样做,正如我说的,我不确定你应该在一个新对象上使用push。只需分配ID数组。