如何让MongoDB node.jsfindAPI调用知道你是否将字段或选项作为parameter passing?

MongoDB node.js findAPI调用允许selector, fields, callback?selector, options, callback? 。 字段和选项对象之间的差异如何? 他们都可以是对象?

你可以在源代码中看到自己。

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

 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 = {}; } }