Не удается найти базу данных mongodb в nodejs

#javascript #node.js #mongodb

#javascript #node.js #mongodb

Вопрос:

Я новичок в nodejs и mongo db. Я подключил свой код к mongodb compass, он тоже подключается, но просто не может найти базу данных. Пожалуйста, помогите мне, это мой основной файл First.js

 const express=require('express');
const app=express();
const parser=require("body-parser");
const mongoconnect=require("./util/database").mongoConnect;
const path=require("path");
const input=require("./routes/input");
app.use(parser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname,"css")));
app.set('view engine','ejs');
app.set('views','views');
app.use((req,res,next)=>{
    console.log("Hahah")

next();})
app.use(input);

mongoconnect(()=>{
    app.listen(1234);
});
  

Это мой database.js

 const mongodb = require('mongodb');
let db;
const MongoClient= mongodb.MongoClient;
const mongoConnect=callback=>{
    MongoClient.connect("mongodb srv://jack:<password>@cluster0.xpkmi.mongodb.net/shop?retryWrites=trueamp;w=majority").then(result=>{
        console.log("connected")
        db=result.db('shop');
        callback();
    }).catch(err=>{console.log(err)});
}
const getDb=()=>{
    if(db)
    {
        return db;
    }
    throw 'No database found';
}

exports.mongoConnect=mongoConnect;
exports.getDb=getDb;
  

И на выходе, когда я запускаю, он показывает мне
База данных не найдена

Ответ №1:

Хорошо, давайте разберемся с этим. Вы объявляете переменную db (как неопределенную) в database.js . Функция mongoConnect является асинхронной. Итак, что происходит, выполняются другие синхронные функции и инструкции, а переменная db по-прежнему не определена. Итак, он выдает ошибку. После этого переменная db устанавливается с помощью вашего асинхронного вызова