无法使用node.js连接到MongoDB

时间:2014-02-06 22:55:45

标签: node.js mongodb mongoose

我在我的机器上安装了MongoDB,我可以使用mongo命令启动mongod并连接到db。我甚至在mycol db:

mydb集合中导入了一些数据
$ sudo start mongodb
mongodb start/running, process 31008
$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> use mydb
switched to db mydb
> db.mycol.count();
5730
> ^C
bye

但是现在如果我想通过node.js访问数据库,它就不再有效了,我得到了TypeError

我尝试使用此代码(更新):

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

MongoClient.connect('mongodb://localhost:27017/mydb', function(err, db) {
    if(err) throw err;
    console.log("connected!");
});

这是基于npm模块mongodb,我也尝试了mongoosemongojs,每次都有相同的结果。只要我想连接到数据库,我就会得到一个TypeError

$ node mngclient.js 
Failed to load c++ bson extension, using pure JS version

events.js:172
    throw TypeError('type must be a string');
          ^
TypeError: type must be a string
    at TypeError (<anonymous>)
    at EventEmitter.once (events.js:172:11)
    at Server.Base._registerHandler (/home/odi/dev/mydb/node_modules/mongodb/lib/mongodb/connection/base.js:387:23)
    at null.<anonymous> (/home/odi/dev/mydb/node_modules/mongodb/lib/mongodb/connection/server.js:410:12)
    at EventEmitter.emit (events.js:91:17)
    at null.<anonymous> (/home/odi/dev/mydb/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:111:15)
    at EventEmitter.emit (events.js:97:17)
    at Socket.<anonymous> (/home/odi/dev/mydb/node_modules/mongodb/lib/mongodb/connection/connection.js:297:10)
    at Socket.EventEmitter.emit (events.js:116:20)
    at Object.afterConnect [as oncomplete] (net.js:848:10)

更新

  • mongodb npm包的版本为1.3.23
  • npm outdated显示没有输出,所以我猜我的包是最新的
  • 使用mongoose以下非常简单的代码会出现完全相同的错误:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydb');

更新II

  • 我仍然无法在我的机器上解决此问题
  • 我使用vagrant在虚拟机中设置整个项目。它就像一个魅力。

2 个答案:

答案 0 :(得分:0)

您应该阅读文档,尝试启动服务器(我不知道为什么?)这里有一个连接到您已运行的mongo数据库的示例:

MongoClient.connect('mongodb://localhost:21017/myDb', function(err, db) {
  "use strict";
  if(err) throw err;
  ...//your code
});

答案 1 :(得分:0)

第1步:npm install mongodb 第2步:创建一个文件,命名为:app.js

将以下内容粘贴到文件中:

?- get_some_static(S), do_something(S).

第3步:节点app.js

步骤4:运行mongod和mongo,使用show dbs检查更新的db列表 将创建数据库,并在那里添加名为“documents”的集合。