Javascript NodeJs中间件挂起

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

我正在学习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");

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;