Javascript 节点中的MongoDB客户端
我正在尝试连接node.js中的mongodb,并将指向客户端的链接带到外部变量 我需要创建一个模块,该模块将返回.find()方法的结果。我该怎么做Javascript 节点中的MongoDB客户端,javascript,node.js,database,mongodb,Javascript,Node.js,Database,Mongodb,我正在尝试连接node.js中的mongodb,并将指向客户端的链接带到外部变量 我需要创建一个模块,该模块将返回.find()方法的结果。我该怎么做 const MongoClient = require('mongodb').MongoClient let client mongoClient = new MongoClient('mongodb://localhost:27017/', {useUnifiedTopology: true, useNewUrlParser: true})
const MongoClient = require('mongodb').MongoClient
let client
mongoClient = new MongoClient('mongodb://localhost:27017/', {useUnifiedTopology: true, useNewUrlParser: true})
mongoClient.connect((err, db) => {
if (err) {
return console.log(err)
}
client = db
})
const database = client.db('db')
const collection = database.collection('collection')
client.close()
错误呢
const database = client.db('db')
^
TypeError: Cannot read property 'db' of undefined
如注释所示,您可以使用async/await等待建立连接,并使用try/catch语句执行错误处理:
try {
const client = await mongoClient.connect()
const database = client.db('db')
const collection = database.collection('collection')
} catch(e) {
console.log(e)
}
不要忘记在异步函数中使用它
更新
在异步函数示例中,您可能希望返回集合:
const getData = async () => {
try {
mongoClient = new MongoClient('mongodb://localhost:27017/', {useUnifiedTopology: true, useNewUrlParser: true})
const client = await mongoClient.connect()
const database = client.db('db')
const collection = database.collection('collection')
client.close()
return collection
} catch(e) {
console.log(e)
}
}
在uri之后,必须定义db名称
mongoClient = new MongoClient('mongodb://localhost:27017/', {useUnifiedTopology: true, useNewUrlParser: true})
像这样
mongoClient = new MongoClient('mongodb://localhost:27017/shop', {useUnifiedTopology: true, useNewUrlParser: true})
mongoClient.connect
是异步的,您必须使用await
或将client.db
放在回调函数中。似乎我遇到了问题const client=await mongoClient.connect()SyntaxError:await仅在异步函数中有效
您应该在异步函数中使用它,哦,是的,我明白了。非常感谢,我很高兴能帮上忙!