我有以下数据,其中包含嵌套模式:
用户架构
(function userModel() {
var mongoose = require('mongoose');
var Entry = require('./entry');
var Schema = mongoose.Schema;
var usersSchema = new Schema({
entries: [Entry]
});
module.exports = mongoose.model('Users', usersSchema);
})();
条目架构
(function entryModel() {
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var entrySchema = new Schema({
timeStamp: {
type: Date,
default: Date.now
},
data : [Schema.Types.Mixed]
});
module.exports = mongoose.model('Entry', entrySchema);
})();
我返回以下错误:
errors:
{ entries:
{ [CastError: Cast to Array failed for value "[object Object]" at path "entries"]`
据我所知,这是包含子文档的正确方法。我在这里做错了吗?
答案 0 :(得分:3)
此行module.exports = mongoose.model('Entry', entrySchema);
导出model
而非schema
。您需要导出entrySchema
并使用它来构建userSchema
编辑:
如果要导出模型和架构,则需要执行类似
的操作module.exports = {
schema: entrySchema,
model: mongoose.model('Entry', entrySchema)
}
但一般情况下,您很少需要导出实际模型。这是因为无论何时您希望在不同的文件中访问该特定模型,您只需调用mongoose.model('Entry')
并获取该模型实例。没有必要仅仅为了访问模型而调用require('.path/to/model')
。