9

私は2つのスキーマを持っており、それらを相互に作用させたいと思っています。例えば:

// 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');
4

2 に答える 2

0

ファイルが必要です。それらが同じパスにある場合は、次のようにします。

//calendar.js
var Day = require('./day');
/* Other logic here */
var CalendarSchema = new Schema({
  name: { type: String, required: true },
  startYear: { type: Number, required: true }
})
, Calendar;

/* other logic here */
/* Export calendar Schema */

mongoose.model('Calendar', CalendarSchema);
Calendar = mongoose.model('Calendar');
exports = Calendar;

day.js で同じことを行います

編集: JohnnyHK が言うように、これは機能しません。説明へのリンク

于 2012-09-18T11:34:02.477 に答える