Javascript Node.js和mongodb TypeError:undefined不是函数

Javascript Node.js和mongodb TypeError:undefined不是函数,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我不熟悉node.js和mongodb。我正在使用express和jade编写一个测试应用程序。我已经配置了mongodb和node.js,但是当我尝试从数据库检索数据时,我得到了以下错误:TypeError:undefined不是一个函数 /Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/base.js:242 throw mess

我不熟悉node.js和mongodb。我正在使用express和jade编写一个测试应用程序。我已经配置了mongodb和node.js,但是当我尝试从数据库检索数据时,我得到了以下错误:
TypeError:undefined不是一个函数

/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/base.js:242
            throw message;      
                  ^
    TypeError: undefined is not a function
        at commandHandler (/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/cursor.js:706:16)
        at /Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/db.js:1806:9
        at Server.Base._callHandler (/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/base.js:442:41)
        at /Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/server.js:485:18
        at MongoReply.parseBody (/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
        at null.<anonymous> (/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/server.js:443:20)
        at EventEmitter.emit (events.js:95:17)
        at null.<anonymous> (/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:191:13)
        at EventEmitter.emit (events.js:98:17)
        at Socket.<anonymous> (/Users/apple/Documents/Nodejs/NODE/express_example/node_modules/mongodb/lib/mongodb/connection/connection.js:418:22)
以下是userlist.jade文件:

extends layout

block content
    h1.
        User List
    ul
        each user, i in userlist
            li
                a(href="mailto:#{user.email}")= user.username
下面是我调用userlist即app.js的代码

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);
app.get('/helloworld', routes.helloworld);
app.get('/userlist', routes.userlist(db));

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

如果您试图修改
find
方法会怎么样

exports.userlist = function(db) {
 return function(req, res) {
     var collection = db.get('usercollection');
     collection.find().toArray(function(e,docs){
        res.render('userlist', {
            "userlist" : docs
        });
     });
   };
};

你能发布你调用
userlist(…)
的代码吗?heinob,现在就检查一下……老问题,但我在尝试使用findAndModify时遇到了类似的情况。由于混淆了各种驱动程序,我忘记传递回调方法,导致抛出此错误。在类似的行中,可以尝试find方法的“only callback”语法。@JohnKulova您能解决这个问题吗?我遇到了完全相同的问题。在mongoose包内将mongodb节点模块包升级到1.4.28+,或者将mongoose包升级到3.8.22+,或者您可以将mongodb降级到2.7或更低版本。其中任何一个都不应该工作,我也是node.js新手,也有同样的问题。在实现您的解决方案时,我得到了一个错误对象#没有“toArray”方法。您能显示抛出该错误的示例代码吗?
exports.userlist = function(db) {
 return function(req, res) {
     var collection = db.get('usercollection');
     collection.find().toArray(function(e,docs){
        res.render('userlist', {
            "userlist" : docs
        });
     });
   };
};