Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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
如何阅读javascript框架文档?_Javascript_Node.js_Mongodb - Fatal编程技术网

如何阅读javascript框架文档?

如何阅读javascript框架文档?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,来自.NET世界的我有一份非常耗时的javascript框架文档。我将以“Node.js MongoDB驱动程序API”为例。有一个Collection对象,它具有count()方法。以下是它的链接: 从这里我看到,count()采用三个参数: count(query, options, callback) 起初,我认为我需要提供这三种方法才能使用这种方法。但是,在该方法的示例代码中,我看到它有时只使用一个参数,有时只使用一个参数: // Perform a total count comma

来自.NET世界的我有一份非常耗时的javascript框架文档。我将以“Node.js MongoDB驱动程序API”为例。有一个
Collection
对象,它具有
count()
方法。以下是它的链接:

从这里我看到,
count()
采用三个参数:

count(query, options, callback)
起初,我认为我需要提供这三种方法才能使用这种方法。但是,在该方法的示例代码中,我看到它有时只使用一个参数,有时只使用一个参数:

// Perform a total count command
collection.count(function(err, count) {
  test.equal(null, err);
  test.equal(4, count);

  // Peform a partial account where b=1
  collection.count({b:1}, function(err, count) {
    test.equal(null, err);
    test.equal(1, count);

    db.close();
  });
在第一种情况下,它仅使用
回调
参数调用count(),而在第二种情况下,它提供
选项
回调
。没有使用原始方法说明中所述的所有三个参数的示例

我的问题是一个人怎么知道这些事情?我的意思是,如果本文档中没有示例,我怎么知道这是可能的?另外,如果没有像这样的例子,我如何确定该方法还有其他一些可能的用法

我知道只提供一些参数就调用javascript函数是完全合法的,函数应该能够根据实现来处理它。但作为API的消费者,我不想研究函数实现来找出我可以传递什么样的参数组合。我觉得这个文档还不完整(我以这个mongodb驱动程序为例,但我在其他js框架文档中遇到了类似的问题)


我在阅读javascript文档时是否应该有某种推理,在试图理解不同框架的API时如何思考,如何知道什么是可能的,什么是不可能的等等?

在JavaScript中,特别是Node.JS world中,异步函数有一个常见的模式,即它们的最后一个参数应该是回调函数

count(query, options, callback)
调用异步函数时,必须预见调用的结果将出现在回调中,否则如何获得异步函数调用的结果?所以 根据上面的语句,您至少应该为count方法和在JavaScript中调用的其他异步函数提供一个回调函数

当您看到MongoDB的方法时,另一件可以帮助您的事情是,如果您要使用数据库处理某些数据,您通常需要至少提供一个查询对象和一个回调函数,但如果您需要查询的其他信息,您将提供,选项对象

我知道文档中没有很好地解释查询和选项参数是否为optionals,但如果您看到的源代码以及我在代码上添加的注释,您可以理解:

Collection.prototype.count = function(query, options, callback) {

    // args represents the three parameters
    var args = Array.prototype.slice.call(arguments, 0);

    // extract your last argument and assumes that it is the callback function
    callback = args.pop();

    // extract the first argument that is query
    query = args.length ? args.shift() || {} : {};

    // extract the second argument but this time shift already extracted query
    // so the first parameter this time will be options.
    options = args.length ? args.shift() || {} : {};

    ...
}
如果将以下值传递给调用,您将看到count方法如何获取参数中的注释顺序:

count({}, {}, function callback() {}); // count(query, options, callback)
count({}, function callback() {}); // count(query, callback)
count(function callback() {}); // count(callback)
事实上,在嵌套调用count方法中提供的示例中,您正在向count方法传递查询和回调not选项和回调

collection.count(function(err, count) {
  test.equal(null, err);
  test.equal(4, count);

  // You are passing the values in this order (query, callback)
  // {b: 1} === query
  collection.count({b:1}, function(err, count) {
    test.equal(null, err);
    test.equal(1, count);

    db.close();
});

我希望这个解释和代码能帮助您理解JavaScript世界中的这种常见回调模式。

我想这只是假设您熟悉JavaScript。如果函数中未输入参数,则函数中未定义该参数。如果参数多于定义的参数,则忽略这些参数。除非它们可以通过arguments变量访问。如果它没有指定它的所有参数,那就是缺少文档,但我发现它们总是这样。例如,您给出的计数示例清楚地列出了它的参数。它遵循一种常见的设计模式,数据/选项/回调。e、 g coll.count({b:1},{limit:true,skip:false,hint:'derp'},函数(err,count){});