我模型中的一个字段定义为
providerID:{type:Number,required:true,unique:true}。
providerId是第一次插入提供程序详细信息时插入的唯一编号。有些实例需要更新提供程序详细信息,如名称地址等。在更新api调用期间,mongoose会为字段引发验证错误&# 39; providerID'通过我根本不改变它。
有没有办法跳过/忽略' providerID'在api通话期间? 理想情况下,我希望mongoose在插入api调用期间抛出验证错误,并在更新api调用期间跳过验证。
答案 0 :(得分:0)
通过查看code,我的猜测就是这样。
transportModel.findOneAndUpdate(conditions, update, { returnOriginal: false, upsert: true }, callback);
您的findOneAndUpdate()
正在使用upsert: true
选项,即创建对象(如果该对象不存在)。该对象可能不存在吗?如果是这样,它将尝试使用您提供的数据创建一个新对象而不使用providerID
,这将触发错误。
使用相同条件的findOne()
运行快速测试。
transportModel.findOne(conditions, function (err, model) {
if (!model)
console.log('something is wrong with your data or conditions');
});