Я учусь кодировать в Amazon Cloud 9 и пытаюсь подключиться к базе данных MongoDB из NodeJS, но когда я вызываю функцию connect()
, db
, возвращаемая в обратном вызове, не определена. Тем не менее, я вижу, что данные существуют, когда я запускаю show dbs
в оболочке mongo, и сервер mongo работает без проблем, а сама функция connect()
не выдает никаких ошибок.
index.js : Вот мой index.js файл, содержащий соединение MongDB (этот файл выполняется, когда я запускаю npm start
в терминале):
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 server работает так, как он говорит «ожидание соединения через порт 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
в консоли, даже если соединение установлено правильно и данные действительно существуют. , Спасибо за любую помощь!