2013-04-08 98 views
0

我有一个模式:验证猫鼬混合模式类型

// Schema 
var Product = new Schema({ 
    data: { 
    type: mongoose.Schema.Types.Mixed 
    }, 
    created: { 
    type: Date, 
    'default' : Date.now 
    } 
}); 

“数据”字段用于存储JSON字符串这将有所不同。然而,我想执行一些基本的验证,如长度等等。但是这样做:

// Validation 
Product.path('data').validate(function (value) { 
    console.log(value); 
    return value.length > 0; 
}, 'Data cannot be blank'); 

抛出有关数据不存在的错误:

TypeError: Cannot read property 'length' of undefined 

什么是做到这一点的最好方法是什么?

+0

data:{type:mongoose.Schema.Types.Mixed,required:true} 〜这不正常吗? – 2014-01-24 10:45:25

回答

1

您正在将“值”视为对象而不检查它是否确实如此。试试这个:

if(typeof value !== "undefined" && value !== null) 
{ 
    return value.length > 0 
} 
+1

或者只是:'返回值&& value.length;' – JohnnyHK 2013-05-02 12:42:49