我在我的机器上安装了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
,我也尝试了mongoose
和mongojs
,每次都有相同的结果。只要我想连接到数据库,我就会得到一个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 :
答案 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”的集合。