javascript - 在nodejs中找不到数据库mongodb
问题描述
我是 nodejs 和 mongo db 的新手。我将我的代码连接到 mongodb 指南针,它也正在连接,但找不到数据库。请帮助我这是我的主文件 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;
当我运行它时在输出中显示没有找到数据库
解决方案
好的,让我们弄清楚这一点。您在 database.js 中声明了一个变量 db(未定义)。mongoConnect 函数是异步的。因此,发生的情况是,执行了其他同步函数和指令,而 db 变量仍未定义。因此,它会引发错误。之后,通过异步调用设置 db 变量
推荐阅读
- javascript - Angular - 有没有办法检查事件绑定的唯一属性?
- r - Subset dataframe based on several conditions in R
- node.js - ExpressJS:如何在 POST 请求后呈现新网页
- graphql - Q: Intellisense when using context.prisma
- javascript - 空白输入中断计时器
- mysql - 在 MySQL 中合并两个 UPDATE 语句
- javascript - What I did wrong with object instantiation to "Uncaught RangeError: Maximum call stack size exceeded" error to be displayed and how to avoid it?
- karate - Using If condition to select data
- c++ - Main 的 Makefile 未定义参考(在 StackOverflow 上尝试过其他帖子)
- c# - Microsoft Azure Functions Nuget 包阻止 NET 库打包到 Nuget