这是因为您在模块中导出的内容不是Schemas
, 他们是Models
。当你这样做时var EventSchema = require('../Models/Event');
你需要Event Model
,不是Event Schema
。要从模型访问底层架构,您可以执行以下操作:
var EventSchema = require('../Models/Event').schema;
var InterestSchema = require('../Models/Interest').schema;
var UserSchema = require('../Models/User').schema;
当您引用属于另一个集合的文档时,您还会遇到问题,这应该有效:
事件模型:
var mongoose = require('mongoose');
var UserSchema = require('./User').schema;
var EventSchema = new mongoose.Schema({
title: String,
description: String,
location: String,
attendees: [{ type: Schema.Types.ObjectId, ref: 'User' }],
date: String
});
module.exports = mongoose.model('Event', EventSchema);
兴趣模型:
var mongoose = require('mongoose');
var InterestSchema = new mongoose.Schema({
name: String
});
module.exports = mongoose.model('Interest', InterestSchema);
用户型号:
var mongoose = require('mongoose');
var EventSchema = require('./Event').schema;
var InterestSchema = require('./Interest').schema;
var UserSchema = new mongoose.Schema({
email: String,
password: String,
eventsHosted: [{ type: Schema.Types.ObjectId, ref: 'Event' }],
eventsAttended: [{ type: Schema.Types.ObjectId, ref: 'Event' }],
currentlyAttending: [{ type: Schema.Types.ObjectId, ref: 'Event' }],
currentlyHosting: [{ type: Schema.Types.ObjectId, ref: 'Event' }],
profileImage: String,
interests: [{ type: Schema.Types.ObjectId, ref: 'Interest' }],
followers: [{ type: Schema.Types.ObjectId, ref: 'User' }],
following: [{ type: Schema.Types.ObjectId, ref: 'User' }]
});
module.exports = mongoose.model('User', UserSchema);
如何在我的 Mongoose 架构中引用另一个架构? https://stackoverflow.com/questions/29078753/how-to-reference-another-schema-in-my-mongoose-schema
http://mongoosejs.com/docs/populate.html http://mongoosejs.com/docs/populate.html