如何在更新API调用期间跳过mongoose模式验证

时间:2017-09-24 07:18:36

标签: javascript node.js mongodb mongoose

我模型中的一个字段定义为

providerID:{type:Number,required:true,unique:true}。

providerId是第一次插入提供程序详细信息时插入的唯一编号。有些实例需要更新提供程序详细信息,如名称地址等。在更新api调用期间,mongoose会为字段引发验证错误&# 39; providerID'通过我根本不改变它。

有没有办法跳过/忽略' providerID'在api通话期间? 理想情况下,我希望mongoose在插入api调用期间抛出验证错误,并在更新api调用期间跳过验证。

1 个答案:

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