MongooseJS中的级联持久性
MongooseJS是否直接或通过插件支持级联持久性 以下操作将把foo文档添加到foos集合中的数据库中,并正确保存文档包装:MongooseJS中的级联持久性,mongoose,Mongoose,MongooseJS是否直接或通过插件支持级联持久性 以下操作将把foo文档添加到foos集合中的数据库中,并正确保存文档包装: var fooSchema = new Schema({ name: String, value: Number }), fooModel = mongoose.model('Foo', fooSchema), wrapSchema = new Schema({ name: String, item: { type: Schema.Types.O
var fooSchema = new Schema({ name: String, value: Number }),
fooModel = mongoose.model('Foo', fooSchema),
wrapSchema = new Schema({ name: String, item: { type: Schema.Types.ObjectId } }),
wrapModel = mongoose.model('FooWrap', wrapSchema);
var foo = new fooModel({ name: 'First', value: 1 });
foo.save(function(err, data) {
if (err) throw err;
var wrap = new wrapModel({ name: 'Foo Wrapper', item: data });
wrap.save(function (err, data) {
if (err) throw err;
...
});
});
据我了解,这种方法是正确的。因为Mongoose和MongoDB要求您独立保存文档
因此,以下代码无法将bar添加到bars集合,但使用bar的_id保存包裹。存在barwraps集合,但没有bars集合
var barSchema = new Schema({ name: String, value: Number }),
barModel = mongoose.model('Bar', barSchema),
wrapSchema = new Schema({ name: String, item: { type: Schema.Types.ObjectId } }),
wrapModel = mongoose.model('BarWrap', wrapSchema),
bar = new barModel({ name: 'Second', value: 1 }),
wrap = new wrapModel({
name: 'Bar Wrapper',
item: bar
});
wrap.save(function(err, data) {
if (err) throw err;
...
});
是否有可能,或者更准确地说,建议第二种情况使用save上的中间件预挂钩执行级联save操作?尝试将bar对象保存到wrapModel,然后在wrap中使用其ObjectId