Typeerror:mongo模块的find方法未定义

时间:2015-01-13 22:49:50

标签: javascript node.js mongodb

我是NodeJS的新手,我正在使用MongoDB进行推广。但是我的错误在我看来很奇怪:TypeError: Cannot call method 'find' of undefined.我试图使用' find'来自节点mongo模块的方法,collection.find({id: "1"}, callback),但我得到的只是那个错误。然而,奇怪的是插入确实有效。有什么问题?

db.collection('users', function(error, collection)
{
    console.log('Collection:'); 
    // ================ THIS WORKS =================
    // insert : 

    // collection.insert({

    //  id: "1", 
    //  name: "Marciano", 
    //  email: "email@email.nl", 

    // }, function()
    // {
    //  console.log('inserted!');
    // }); 

    // collection.insert({

    //  id: "2", 
    //  name: "Edward Elric", 
    //  email: "edward_elric@live.nl", 

    // }, function()
    // {
    //  console.log('inserted!')
    // }); 
    // ======= THIS DOESNT WORK ========
    // select: 
    // specify an object with a key for a 'where' clause
    collection.find({'id': '1'}, function(error, cursor)
    {
            //cursor : iterateing over results

            cursor(function(error, user)
            {
                console.log("found:" + user);
            })

    })



}); 

2 个答案:

答案 0 :(得分:0)

这不是你如何迭代从Cursor返回的.find()对象。使用.each().toArray()方法来处理结果。

collection.find({ "id": 1 }).toArray(function(err,data) {
    // data is an array of objects from the collection
});

答案 1 :(得分:0)

导致beucase你将记录插入数据库并且不等待回调。如果你想这样做,我建议你使用async和方法瀑布。 但无论如何,最好使用Mongoose而不是现在使用。 并写下这样的东西

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/collection');

var user = new User({ name: 'John' });
user.save(getInsertedUsers);

var getInsertedUsers = function(){
    User.find({ name: "John" }, echoUsers);  //if you want to get just users named john or
    User.find({}, echoUsers);
}
var echoUsers = function(users)
{
    console.log(users);
}