Node调用mongodb写如数据异常
最近有看学习使用Express
,然后按照网上一些教程编写demo,但是发现在结合mongodb使用时,总会报错;最后搜索一番,原来是mongodb
的版本3.x
与2.x
写法不同,所以才会提示报错。
我的版本: "mongodb": "^3.5.7"
如果使用2.x
版本,网友说可以将版本降至: "mongodb": "^2.2.33"
问题描述
使用nodejs,连接mongodb,数据写入提示异常:
TypeError: db.collection is not a function
或
TypeError: db.open is not a function
或
TypeError: db.close is not a function
或
TyepError: client.insert is not a function
错误方式
以下是按照博主的demo写的,就提示TypeError: db.open is not a function
//打开数据库
mongodb.open(function (err, db) {
if (err) {
return callback(err);//错误,返回 err 信息
}
//读取 users 集合
db.collection('users', function (err, collection) {
if (err) {
mongodb.close();
return callback(err);//错误,返回 err 信息
}
//查找用户名(name键)值为 name 一个文档
collection.findOne({
name: name
}, function (err, user) {
mongodb.close();
if (err) {
return callback(err);//失败!返回 err 信息
}
callback(null, user);//成功!返回查询的用户信息
});
});
});
正确方式
var MongodbClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/blog'
// 连接数据库
MongodbClient.connect(url, function(err, client) {
if (err) {
return callback && callback(err)
}
var db = client.db('blog')
db.collection('users').findOne({ username: username }, function(err, result) {
client.close()
if (err) {
return callback && callback(err)
}
callback(null, result)
})
})