Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js mongoose:将单个子文档添加到文档中_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Node.js mongoose:将单个子文档添加到文档中

Node.js mongoose:将单个子文档添加到文档中,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,如何将单个子文档添加到mongoose文档?考虑下面的脚本编写: ParentSchema: Schema = new Schema({ name: String, child: ChildSchema }); ChildSchema: Schema = new Schema({ name: String }); 每当我创建一个新的父对象时,我都想向父对象添加一个新的子对象。在我的代码示例中,创建了新的父级,但从未将子级添加到父级。子项一直显示为空。以下是我当前的保存

如何将单个子文档添加到mongoose文档?考虑下面的脚本编写:

ParentSchema: Schema = new Schema({
    name: String,
    child: ChildSchema
});

ChildSchema: Schema = new Schema({
    name: String
});
每当我创建一个新的父对象时,我都想向父对象添加一个新的子对象。在我的代码示例中,创建了新的父级,但从未将子级添加到父级。子项一直显示为空。以下是我当前的保存逻辑:

let parentdoc = new this._model(iparent);//base repository protetected member

      parentdoc.save((err: any, result: IParentModel) => {
          if (err) {
              reject(err);
          }

          result.child = new Child(child);
          result.update(null, (err: Error, results1: IParentModel) => {
              if (err) {
                  reject(err);
              }

                  resolve(result1);
          });
      });


where this._model = mongoose.model<IParentModel>("Parent", ParentSchema)
让parentdoc=newthis.\u模型(iparent)//受保护的基本存储库成员
parentdoc.save((错误:any,结果:IParentModel)=>{
如果(错误){
拒绝(错误);
}
result.child=新子女(child);
result.update(null,(err:Error,results1:IParentModel)=>{
如果(错误){
拒绝(错误);
}
解决(结果1);
});
});
其中,this.\u model=mongoose.model(“父”,ParentSchema)

在此代码中,什么会导致父对象保存而不是子对象?

看起来您没有向更新方法发送任何值,因此您可以再次保存文档以将子对象添加到父对象:

parentdoc.save((err: any, result: IParentModel) => {
          if (err) {
              reject(err);
          }

          result.child = new Child(child);
          result.save(null, (err: Error, results1: IParentModel) => {
              if (err) {
                  reject(err);
              }

                  resolve(result1);
          });
      });
或在更新方法中设置子项:

parentdoc.save((err: any, result: IParentModel) => {
          if (err) {
              reject(err);
          }

          const child1 = new Child(child);
          result.update(null, { $set: { child: child1, } }, null, (err: Error, results1: IParentModel) => {
              if (err) {
                  reject(err);
              }

                  resolve(result1);
          });
      });