Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB node.js find API调用如何知道是否将字段或选项作为参数传递?_Node.js_Mongodb - Fatal编程技术网

MongoDB node.js find API调用如何知道是否将字段或选项作为参数传递?

MongoDB node.js find API调用如何知道是否将字段或选项作为参数传递?,node.js,mongodb,Node.js,Mongodb,MongoDB node.js同时允许选择器、字段、回调?和选择器、选项、回调?。字段和选项对象之间有什么区别?它们都可以是对象?您可以在中自己看到 该算法非常简单:迭代每个提供的值并检查它是否为已知选项。如果不是选项,则必须是字段 var testForFields = { limit: 1, sort: 1, fields:1, skip: 1, hint: 1, explain: 1, snapshot: 1, timeout: 1, tailable: 1, tailableRe

MongoDB node.js同时允许
选择器、字段、回调?
选择器、选项、回调?
。字段和选项对象之间有什么区别?它们都可以是对象?

您可以在中自己看到

该算法非常简单:迭代每个提供的值并检查它是否为已知选项。如果不是选项,则必须是字段

var testForFields = {
    limit: 1, sort: 1, fields:1, skip: 1, hint: 1, explain: 1, snapshot: 1, timeout: 1, tailable: 1, tailableRetryInterval: 1
  , numberOfRetries: 1, awaitdata: 1, exhaust: 1, batchSize: 1, returnKey: 1, maxScan: 1, min: 1, max: 1, showDiskLoc: 1
  , comment: 1, raw: 1, readPreference: 1, partial: 1, read: 1, dbName: 1, oplogReplay: 1, connection: 1
};
再往下,在
find
方法中:

if(len === 2 && !Array.isArray(fields)) {
    var fieldKeys = Object.getOwnPropertyNames(fields);
    var is_option = false;

    for(var i = 0; i < fieldKeys.length; i++) {
      if(testForFields[fieldKeys[i]] != null) {
        is_option = true;
        break;
      }
    }

    if(is_option) {
      options = fields;
      fields = undefined;
    } else {
      options = {};
    }
  }
if(len==2&&!Array.isArray(字段)){
var fieldKeys=Object.getOwnPropertyNames(字段);
var为_option=false;
对于(变量i=0;i
我不知怎么错过了
testForFields
:-)谢谢嗯,如果我的字段与任何选项命名相同,它会将对象作为选项吗?这很易碎,不是吗?