如果没有错误,node.js回调函数需要null吗?

时间:2017-08-03 15:56:50

标签: node.js mongodb

只是看看mongodb驱动程序的示例代码: http://mongodb.github.io/node-mongodb-native/2.2/tutorials/projections/

var MongoClient = require('mongodb').MongoClient
  , assert = require('assert');

// Connection URL
var url = 'mongodb://localhost:27017/test';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
  assert.equal(null, err);
  console.log("Connected correctly to server");

  findDocuments(db, function() {
    db.close();
  });  
});


var findDocuments = function(db, callback) {
  // Get the documents collection
  var collection = db.collection( 'restaurants' );
// Find some documents
  collection.find({ 'cuisine' : 'Brazilian' }, { 'name' : 1, 'cuisine' : 1 }).toArray(function(err, docs) {
    assert.equal(err, null);
    console.log("Found the following records");
    console.log(docs)
    callback(docs);
  });
}

Shouln的最后一行回调(docs)是回调(null,docs)?

1 个答案:

答案 0 :(得分:2)

这取决于您的回调。

error-first callbacks,它确实将错误作为第一个参数,将数据作为第二个参数,如:callback (err, data)

然而,在Mongo的官方示例网页(你指出的那个)中,他们传递了一个没有错误参数的回调。错误优先回调在Node的内置模块中无处不在,但Node并不强制您以任何方式使用它们。这就是Mongo开发人员决定做的事情。

但是,您可以轻松地重写Mongo示例以使用错误优先回调。