如何将单个子文档添加到mongoose文档?请考虑使用typescript编写的以下场景:
ParentSchema: Schema = new Schema({
name: String,
child: ChildSchema
});
ChildSchema: Schema = new Schema({
name: String
});
我想在创建新父级时向父级添加一个新子级。对于我的代码示例,将创建新父级,但子级永远不会添加到父级。孩子一直显示为null。这是我目前的保存逻辑:
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)
在此代码中,什么会导致父级保存而不是子级?
答案 0 :(得分:0)
看起来您没有向update方法发送任何值,因此您可以再次保存文档以将子项添加到父级:
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);
});
});