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它们两者