Javascript NodeJs中间件挂起
我正在学习Node.js,并尝试从主文件中拆分中间件逻辑 我的结构如下: index.js:Javascript NodeJs中间件挂起,javascript,node.js,express,mern,Javascript,Node.js,Express,Mern,我正在学习Node.js,并尝试从主文件中拆分中间件逻辑 我的结构如下: index.js: const express = require("express"); const app = express(); app.use(express.json()); app.use( express.urlencoded({ extended: true, }) ); const login = require("./middleware/login
const express = require("express");
const app = express();
app.use(express.json());
app.use(
express.urlencoded({
extended: true,
})
);
const login = require("./middleware/login");
app.use("/login", login);
app.use('/', function(req, res, next) {
res.send('1');
})
var portnumber = 3002;
app.listen(portnumber, () =>
console.log("Express server is running on localhost:" + portnumber)
);
../middleware/login.js:
const { default: axios } = require("axios");
const mongoose = require("mongoose");
const express = require("express");
const app = express();
const login = () => {
var URI =
"left empty for security reasons";
mongoose.connect(URI, { useNewUrlParser: true }).catch((error) => {
console.log(error);
handleError(error);
});
app.use(function(req, res, next) {
res.send('1');
next();
});
};
module.exports = login;
我试图了解整个系统是如何工作的,我知道代码挂起是因为它不知道在完成登录组件后该做什么。app.use()
将尝试将req、res、next
作为参数传递给login()方法,这在当前是不可能的。因此,您希望删除应用程序。请使用login()方法的一部分,并将参数移动到login(),如下所示:
@我编辑了答案,谢谢!我还怀疑OP是否希望在每次登录请求时调用
mongoose.connect()
。我希望他们正在缓存那个连接,但也许我们只看到了他们代码的一部分。那么你建议我在哪里保留数据库连接呢?将它放在单独的文件中,该文件将在索引方法中使用app.use()调用,或者直接在索引文件中使用?
const express = require("express");
const app = express();
app.use(express.json());
app.use(
express.urlencoded({
extended: true,
})
);
const login = require("./middleware/login");
app.use("/login", login);
app.use('/', function(req, res, next) {
res.send('1');
})
var portnumber = 3002;
app.listen(portnumber, () =>
console.log("Express server is running on localhost:" + portnumber)
);
../middleware/login.js:
const { default: axios } = require("axios");
const mongoose = require("mongoose");
const login = (req, res, next) => {
var URI =
"left empty for security reasons";
mongoose.connect(URI, { useNewUrlParser: true }).catch((error) => {
console.log(error);
handleError(error);
});
res.send('1');
};
module.exports = login;