mongoose – 创build模型保存的参考

在mongoose中,是否可以创build一个被引用的文档,同时保存被引用的文档? 我已经尝试了下面,但它似乎并没有为我工作。

var Model1Schema = new Schema({ foo: String, child: { ref: 'Model2', type: ObjectId } }); var Model2Schema = new Schema({ foo: String }); mongoose.model('Model1', Model1Schema); mongoose.model('Model2', Model2Schema); var m = new (mongoose.model('Model1')); m.set({ foo: 'abc', child: { bar: 'cba' } }).save(); 

Mongoosevalidation不允许创build子对象,因为它是一个引用,所以你可以做的第二件事是创build自己的函数来创build一个已经被保存的已更正的子对象的实例。 类似这个,我想..

 var Model1Schema = new mongoose.Schema({ foo: String, child: { ref: 'Model2', type: mongoose.Schema.ObjectId } }); var Model2Schema = new mongoose.Schema({ foo: String }); var Model1 = mongoose.model('Model1', Model1Schema); var Model2 = mongoose.model('Model2', Model2Schema); function CreateModel1WithStuff(data, cb) { if (data.child) { // Save child model first data.child = Model2(data.child); data.child.save(function(err) { cb(err, err ? null : Model1(data)); }); } else { // Proceed without dealing with child cb(null, Model1(data)); } } CreateModel1WithStuff({ foo: 'abc', child: { bar: 'cba' } }, function(err, doc) { doc.save(); });