当我使用“ 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');
}
}