将 req,res 从 index.js 传递到 Node 中的另一个 js 文件

Pass req,res from index.js to another js file in Node

[我正在为节点使用 express]。

我遇到了一个代码,其中表单数据被发布到 index.js 但它必须在另一个 javascript 文件中处理。我几乎每一步都调试了原始代码,但此时我卡住了。

以下是文件中的相关部分。

index.js

var express = require('express');
var router = express.Router();
const proctor = require('../controllers/proctor');

router.post('/myform', function(req, res, next) {
  console.log("hello");
  proctor.function1;
});
module.exports = router;

proctor.js(不是我写的)

exports.function1 = (req, res) => {
    console.log(req.body);
}

app.js

var indexRouter = require('./server/routes/index');
app.use('/', indexRouter);
module.exports = app;

所以,控制台显示“hello”,而不是 req.body,所以根本没有调用第二个 js 文件。 proctor.js 不是我的代码,我想我需要导入 index.js 才能让它工作。

文件树是

app.js
server
   controllers
      proctor.js
   routes
      index.js

像这样用 proctor.function1 替换你的匿名函数

router.post('/myform', proctor.function1);

将监考人改为

module.exports = {
  function1: (req, res) => {
    console.log(req.body);
  }
}

作为关闭问题的标志,因为原始回答者没有添加答案。

  1. const proctor = require('../controllers/proctor'); 导入由 proctor.js 文件导出的对象。但是在这种情况下,我们必须使用

    const proctor = require('../controllers/proctor.js');

    能够调用proctor.js

    中的函数
  2. 我没有将参数传递给函数调用。所以,我必须做

router.post('/myform', function(req, res, next) {
  console.log("hello");
  proctor.function1(req,res,next);
});