mongoose – 可能的循环依赖?
我的快速应用程序中有以下mongoose模型:
//user.js var mongoose = require('mongoose'); var dog = require('./dog'); var userSchema = mongoose.Schema({ user: { type: String, required: true }, pass: { type: String, required: true }, dogs: [dog.dogSchema], }); //dog.js var mongoose = require('mongoose'); var dogSchema = exports.dogSchema = mongoose.Schema({ name: { type: String, required: true }, });
现在,我从我的路线创build一个像这样的新用户:
var user = require('../models/user'); var dog = require('../models/dog'); dog = new dog.Dog(dogData); user = new user.User(data); //this will of course contain also dogData user.save(next);
这是做这种手术的正确方法吗? 我有一种感觉,我可能会产生一个循环依赖,不pipe怎样,这看起来不正确。 任何关于如何创build模式来自另一个模型文件的子文档的想法?
您可以在两个方向上创build同时引用,而不会产生循环问题。 使用ref
创build从一个文档到另一个文档的ref
。 从文档:
http://mongoosejs.com/docs/populate.html
var mongoose = require('mongoose') , Schema = mongoose.Schema var personSchema = Schema({ _id : Number, name : String, age : Number, stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }] }); var storySchema = Schema({ _creator : { type: Number, ref: 'Person' }, title : String, fans : [{ type: Number, ref: 'Person' }] }); var Story = mongoose.model('Story', storySchema); var Person = mongoose.model('Person', personSchema);
然后,您可以select使用populate
来加载子文档
Story.find({ --your criteria-- }) .populate('_creator') .exec(function (err, story) {../});
然后,您可以将2个模式存储在单独的.js文件中,并require
它们两者