node js回调不适用于define函数

时间:2015-08-19 07:38:17

标签: javascript node.js callback anonymous

这是带有node和mongo

的simnple findOne()方法代码
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/blog', function(err, db) {

    if(err) throw err;
    var users = db.collection("users");
    var query = { '_id' : 'bhavin3052' };

    function getData (err, doc){
        if(err) throw err;

        console.dir(doc);

        db.close();
    }

    users.findOne(query, getData(err, doc));


    /*db.collection('users').findOne(query, function(err, doc) {
        if(err) throw err;

        console.dir(doc);

        db.close();
    });*/
});

当我打电话给getData()时,错误地说是“错误”。没有定义...这与匿名函数回调完全正常。

2 个答案:

答案 0 :(得分:1)

试试这个:
users.findOne(query, getData);

.findOne需要查询和回调,但你接受getData的查询和结果(结果是“未定义”)。

答案 1 :(得分:0)

users.findOne(query, getData);

您需要将函数对象(getData)传递给findOne函数。如果你这样做:

users.findOne(query, getData(err, doc));

使用未定义的参数调用getData并将调用的结果传递给findOne