我正在尝试编写一个简单的代码来从Express中的MongoDB中获取一些数据。 以下是我的代码:
var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/mcart'
MongoClient.connect(url)
.then(function (db) {
console.log(db)
})
.catch(function (err) {})
这给了我一个JSON。但是,当我尝试从中访问数据时,我收到错误"db.collection" is not a function
var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/mcart'
MongoClient.connect(url)
.then(function (db) {
var cursor=db.collection("product_catalog").find();
cursor.each(function(err, doc) {
console.log(doc);
});
})
.catch(function (err) {console.log(err)})
我哪里错了?
答案 0 :(得分:2)
使用hasNext()
。它将移动到光标中的下一个doc
,直到它到达结尾。在查询集合之前还要获取数据库名称
var DbName = db.db("databaseNameHere");
var cursor = DbName.collection("product_catalog").find();
while (cursor.hasNext()) {
console.log(tojson(cursor.next()));
}
将您的代码更改为:
var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/mcart'
MongoClient.connect(url)
.then(function (db) {
console.log("Before")
var DbName = db.db("databaseNameHere");
var cursor=DbName.collection("product_catalog").find();
while (cursor.hasNext()) {
console.log(tojson(cursor.next()));
}
console.log("after")
})
.catch(function (err) {})
答案 1 :(得分:1)
当您使用^3.0.x
时,这是连接和执行查询的方式。
使用版本为^3.0.x
的MongoDB nodejs驱动程序,将客户端对象作为回调函数参数。
MongoClient.connect('mongodb://localhost:27017', (err, client) => {
if(err)
throw err
// Client returned
var db = client.db('mcart');
db.collection("product_catalog").find();
...
});
您正在采用的方式是旧的方式,在2.x
版本中使用,它将db对象作为回调函数的参数。
详细了解更改日志here
答案 2 :(得分:0)
我尝试了下面的代码,这很好用。这段代码基本上是另外两个答案的组合。只是将来发布给其他人。
Calendrier.class.getResourceAsStream("/resources/villes.csv" )