NodeJS与MongoDB的连接(在AWS C9上)返回未定义的db对象

时间:2018-05-05 11:21:43

标签: node.js mongodb aws-cloud9

我正在学习如何在亚马逊的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,即使连接已正确建立并且数据实际存在。谢谢你的帮助!

0 个答案:

没有答案