架构:
var SomeSchema = new Schema({
name: { type: String, required: true, unique: true },
description: { type: String, required: false }
},{
versionKey: false
}
);
//在这种情况下,客户端没有向我传递描述,这是正确的,因为不需要此属性 . //为什么更新会失败?
var update = {name: someName, description: someDescription};
findByIdAndUpdate(id, update, function(err, something) { ...
这是错误,是的,不能将null / undefined强制转换为String,但为什么要尝试?
CastError:对于路径“description”中的值“undefined”,转换为字符串失败
1 回答
更新失败,因为当您将描述设置为
not required
时,如果update
对象中定义了一个,则更新方法仍会查看update.description
的值 . 这是因为,根据docs:在任何情况下,解决此问题的简单方法是在将描述值插入
update
对象之前检查是否正在传递描述值 .在旁注中,不允许
null
s,如here所述