我正在学习如何在亚马逊的Cloud 9上编码,我正在尝试从NodeJS连接到MongoDB数据库,但当我调用connect()
函数时,回调中返回db
未定义。但是,我可以看到,当我在mongo shell中运行show dbs
时,数据存在,并且mongo服务器正在运行而没有问题,并且connect()
函数本身不会抛出任何错误。
index.js :这是我的 index.js 文件,其中包含MongDB连接(当我在终端中运行npm start
时,此文件会执行):< / p>
var MongoClient = require('mongodb').MongoClient;
// Connect to the db
MongoClient.connect("mongodb://localhost:27017/testdb", function (err, db) {
if (err){ console.log(err)}
else{
console.log("Connected!")
console.log(db.name)
}
db.close()
})
mongo shell 确认数据库存在(sample
是集合的名称):
use testdb
switched to db testdb
db.sample.find()
{ "_id" : ObjectId("5aed5fc7a44ab7d8a4efce2f"), "name" : "Luckyfield" }
mongo服务器正在运行,因为它说“等待端口27017上的连接”,每当我运行index.js文件时,此服务器都会记录终端中的连接打开和关闭:
connection accepted from 127.0.0.1:43820 #16 (1 connection now open)
2018-05-05T11:07:16.128+0000 I NETWORK [conn16] received client metadata from 127.0.0.1:43820 conn16: { driver: { name: "nodejs", version: "3.0.7" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "4.9.91-40.57.amzn1.x86_64" }, platform: "Node.js v6.14.1, LE, mongodb-core: 3.0.7" }
2018-05-05T11:07:16.138+0000 I NETWORK [conn16] end connection 127.0.0.1:43820 (0 connections now open)
当我将db.name
替换为db
时,控制台会显示一个充满数据的MongoClient对象,但我不知道它是什么。我也试过插入或查询文档但是db似乎是未定义的。
总之,当我在一个单独的终端中运行npm start
时, index.js 文件会在控制台中执行并打印undefined
,即使连接已正确建立并且数据实际存在。谢谢你的帮助!