Mongoose验证给出“CastError:Cast to undefined failed for value”

时间:2015-05-28 05:33:39

标签: javascript node.js mongodb mongoose

当我尝试将数据保存在数据库中时,它会给出禁止的消息

CastError:投放到未定义的值

失败
[
   {"product":{"supplierId":{"undefined":"rfytr"}}},
   {"product":{"supplierId":{"$empty":"rfytr"}}}
] at path "condition"

我无法弄清楚问题所在。 我的架构是

var mongoose = require('mongoose'),
    validator = require('mongoose-validators'),
    Schema = mongoose.Schema;
var RuleSchema = new Schema({
     description: {
        type: String,
        validate: [validator.isLength(1, 50)]
    },

    status: {
        type: String,
        enum: ['live', 'active', 'paused', 'inactive', 'unfinished']
    },

    /** 
      condition. It can only contain object.
    */
    condition: [{
        type: Object
    }]
});

1 个答案:

答案 0 :(得分:1)

我无法重现那个确切的错误,但您应该将架构中condition的定义更改为非结构化对象数组支持的格式之一,因为我收到了其他错误试图使用[{type: Object}]。这些工作都是:

condition: [{}]
condition: [Schema.Types.Mixed]

但是,您还需要将$字段名称中的前导$empty删除为MongoDB以$ aren't allowed开头的字段名称。< / p>