您的位置:首页 > 数据库 > Mongodb

TypeError: db.collection is not a function

2018-01-08 17:30 776 查看

nodejs调用mongodb驱动写入数据异常

nodejs 版本:v8.9.4

mongodb 版本:3.4.7

问题描述:

使用nodejs,连接mongodb,数据写入时提示如下错误:

$ node insertdb.js
连接成功![object Object]
e:\test\node_modules\_mongodb@3.0.1@mongodb\lib\mongo_client.js:797
throw err;
^

TypeError: db.collection is not a function
at insertData (e:\test\insertdb.js:9:25)
at e:\test\insertdb.js:25:5
at args.push (e:\test\node_modules\_mongodb@3.0.1@mongodb\lib\utils.js:404:72)
at e:\test\node_modules\_mongodb@3.0.1@mongodb\lib\mongo_client.js:255:5
at connectCallback (e:\test\node_modules\_mongodb@3.0.1@mongodb\lib\mongo_client.js:933:5)
at e:\test\node_modules\_mongodb@3.0.1@mongodb\lib\mongo_client.js:794:11
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)


问题分析:

1、根据错误提示:
TypeError: collection is not a function
说明函数:
collection
未找到。

2、从错误堆栈中,定位到node的lib目录,结构如下:



3、错误堆栈中,仅定位到
mongo_client.js
,还没有到数据库一级就出现异常了。

4、打开文件
collection.js
,搜索
collection
方法,找到如下代码示例片段,原来mongodb 3.x版本的库文件与2.x版本的不一样,按照示例修改就可以了:



示例代码:

// mongodb
// 插入数据
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:30000/runoob';
var dbName = 'runnoob';

var insertData = function(db, callback) {
//连接到表 site
var collection = db.collection('site');
//插入数据
var data = [{"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"}];
collection.insert(data, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}

/*连接方式1:错误
MongoClient.connect(url, function(err, db) {
console.log("连接成功!" + db);
insertData(db, function(result) {
console.log(result);
db.close();
});
});
*/

/* 连接方式2:正确*/
MongoClient.connect(url, function(err, client) {
console.log("连接成功!" + client);
var db = client.db(dbName)
insertData(db, function(result) {
console.log(result);
client.close();
});
});


参考

Node.js 连接 MongoDB

http://www.runoob.com/nodejs/nodejs-mongodb.html

mongodb官网帮助:

http://mongodb.github.io/node-mongodb-native/2.2/quick-start/quick-start/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nodejs mongodb
相关文章推荐