Javascript 在nodejs中找不到数据库mongodb

Javascript 在nodejs中找不到数据库mongodb,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").mongoCon

我是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=true&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;
const mongodb=require('mongodb');
让db;
const MongoClient=mongodb.MongoClient;
const mongoConnect=回调=>{
MongoClient.connect(“mongodb+srv://jack:@cluster0.xpkmi.mongodb.net/shop?retryWrites=true&w=maist”)。然后(结果=>{
控制台日志(“已连接”)
db=结果.db('shop');
回调();
}).catch(err=>{console.log(err)});
}
常量getDb=()=>{
中频(db)
{
返回分贝;
}
抛出“未找到数据库”;
}
exports.mongoConnect=mongoConnect;
exports.getDb=getDb;
当我运行它时,在输出中显示
找不到数据库

好的,让我们弄清楚这一点。在database.js中声明一个变量db(未定义)。mongoConnect函数是异步的。所以,所发生的是,其他同步函数和指令被执行,而db变量仍然未定义。所以,它抛出了错误。之后,通过异步调用设置db变量