2017-03-26 24 views
0

我想,我已经创造了其他模式嵌入模式,我不断收到此错误:嵌入模式是给错误

我不能完全确定是怎么回事错在这里,但我想要做什么是存储用户架构内的事件架构和兴趣架构的引用。如果有人能告诉我我做错了什么,那将是非常感谢!

编辑:我现在接收新的错误:

/Users/Dynee/node_modules/mongoose/lib/schema.js:421 
    throw new TypeError('Invalid value for schema Array path `' + prefix + key + '`'); 
^

TypeError: Invalid value for schema Array path `eventsHosted` 
at Schema.add (/Users/Dynee/node_modules/mongoose/lib/schema.js:421:13) 
at new Schema (/Users/Dynee/node_modules/mongoose/lib/schema.js:99:10) 
at Object.<anonymous> (/Users/Dynee/Documents/eventure-rest-backend/Models/User.js:5:18) 
at Module._compile (module.js:570:32) 
at Object.Module._extensions..js (module.js:579:10) 
at Module.load (module.js:487:32) 
at tryModuleLoad (module.js:446:12) 
at Function.Module._load (module.js:438:3) 
at Module.require (module.js:497:17) 
at require (internal/module.js:20:19) 
at Object.<anonymous> (/Users/Dynee/Documents/eventure-rest-backend/Models/Event.js:2:43) 
at Module._compile (module.js:570:32) 
at Object.Module._extensions..js (module.js:579:10) 
at Module.load (module.js:487:32) 
at tryModuleLoad (module.js:446:12) 
at Function.Module._load (module.js:438:3) 

我的用户模式

var mongoose = require('mongoose'); 
var EventSchema = require('../Models/Event').schema; 
var InterestSchema = require('../Models/Interest').schema; 

var UserSchema = new mongoose.Schema({ 
    email: String, 
    password: String, 
    eventsHosted: [EventSchema], 
    eventsAttended: [EventSchema], 
    currentlyAttending: [EventSchema], 
    currentlyHosting: [EventSchema], 
    profileImage: String, 
    interests: [InterestSchema], 
    followers: [UserSchema], 
    following: [UserSchema] 

}); 

module.exports = mongoose.model('User', UserSchema); 

我的事件模式

var mongoose = require('mongoose'); 
var UserSchema = require('../Models/User').schema; 

var EventSchema = new mongoose.Schema({ 
    title: String, 
    description: String, 
    location: String, 
    attendees: [UserSchema], 
    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); 
+0

[用于模式阵列路径无效值(的可能的复制http://stackoverflow.com/questions/30856208/invalid-value-for -schema-array-path) – Veeram

+0

我看着那个线程,它并没有解决我的问题。 – Dynee

回答

0

,那是因为你导出你的模块不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); 

How to reference another schema in my Mongoose schema? http://mongoosejs.com/docs/populate.html

+0

你好!谢谢你的回复,我将.schema添加到每个导入的结尾,但是,我收到了一个类似的错误,如果你能看看我的错误,欣赏它。 – Dynee

+0

如果我想引用整个事件,用户或兴趣,该怎么办?参加活动,参加等。我想引用整个对象,而不仅仅是一个数字。也许我可以只做Schema.Types.ObjectId,然后我可以访问我希望它引用的整个Event,User或Interest。 – Dynee

+0

现在已经修复;) – luisenrike