当我使用“ findOneAndUpdate”进行搜索并且我的搜索参数之一是“未定义”时,我没有收到错误,而是搜索了对象。这是代码:

var q = Q.defer();

    var findOneQuery = {
        _id: restId,
        versionId: document.version // if this parameter is undefined
    };

    this.findOneAndUpdate(findOneQuery, {$set: document, $inc: {versionId: 1}}, {upsert: true, new: true}, function (updateError, updateDocument) {
        if (updateError) {
            q.reject(updateError);
        }
        else {
          q.resolve(updateDocument);
        }
    });
    return q.promise;


我认为如果我输入错了,它应该返回一个错误,我应该怎么做才能搜索发送的两个参数,而不仅仅是两个参数?

最佳答案

您可以轻松地围绕findOneandUpdate编写包装方法,该方法将精确地执行您的需求。

function myFindOneAndUpdate(monObj,query,update,options,callback){
  //validateINput check if the params in query object are undefined
   if(validateInput(query)){
     monObj.findOneAndUpdate(query,update,options,callback)
}else{
 throw new Error('InvalidInput');
}


}

09-25 19:44