私は2つのスキーマを持っていて、それらを相互にやりとりしたいのです。たとえば、次のようになります。Mongooseで相互依存するスキーマを作成する方法は?
// calendar.js
var mongoose = require('mongoose');
var Scema = mongoose.Schema;
var Day = mongoose.model('Day');
var CalendarSchema = new Schema({
name: { type: String, required: true },
startYear: { type: Number, required: true }
});
CalendarSchema.methods.getDays = function(cb){
Day.find({ cal: this._id }, cb);
}
module.exports = mongoose.model('Calendar', CalendarSchema);
// day.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var Calendar = mongoose.model('Calendar');
var DaySchema = new Schema({
cal: { type: ObjectId, required: true },
date: { type: Number, required: true },
text: { type: String, default: 'hello' }
});
DaySchema.methods.getCal = function(cb){
Calendar.findById(this.cal, cb);
}
module.exports = mongoose.model('Day', DaySchema);
ただし、それぞれのスキーマは他のスキーマに依存するため、エラーが発生します。 Mongooseを使ってこれを動作させる方法はありますか?
// app.js
require('./models/calendar');
require('./models/day');
必要なファイルの順序に応じて動作するとは思わないが、calendar.jsまたはday.jsは、[循環依存](http: //nodejs.org/api/modules.html#modules_cycles)。 – JohnnyHK
はい、申し訳ありません!私はそれを考えていません... – Donflopez