Mongoose嵌套模式CastError

时间:2015-08-19 19:22:32

标签: node.js mongodb mongoose

我有以下数据,其中包含嵌套模式:

用户架构

(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"]`

据我所知,这是包含子文档的正确方法。我在这里做错了吗?

1 个答案:

答案 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')