【问题标题】:How to import functions from another file in NodeJS?如何从 NodeJS 中的另一个文件导入函数?
【发布时间】:2023-03-24 10:39:01
【问题描述】:

我是 NodeJS 的新手,我在这方面有点挣扎。我正在使用 Express 并验证数据,我正在使用 Celebrate

我有一个 route.js 文件,我在其中发出 POST 请求,使用另一个文件中的函数来执行此操作(它是 create 函数,来自 MyController。它工作正常!但是当我尝试对我的 validator 做同样的事情时,它不起作用。

那么让我们看一下代码吧。

route.js 文件:

const express = require("express");

const MyController = require("./controllers/MyController");
const MyValidator= require("./validators/MyValidator");

const routes = express.Router();

routes.post("/path", MuValidator.validateCreate, MyController.create);

MyValidator 文件:

module.exports = {

  validateCreate() {
    celebrate({
      [Segments.HEADERS]: Joi.object({
        authorization: Joi.string().required(),
      }).unknown(),
      [Segments.BODY]: Joi.object().keys({
        userId: Joi.string().required(),
        title: Joi.string().required(),
        description: Joi.string().required(),
        value: Joi.number().required(),
        dueDate: Joi.string().required(),
      }),
    });
  },
}

重要提示: 如果我直接在我的路线上编写验证代码,我只会得到这个工作,就像这样:

routes.post(
  "/path",
  celebrate({
    [Segments.HEADERS]: Joi.object({
      authorization: Joi.string().required(),
    }).unknown(),
    [Segments.BODY]: Joi.object().keys({
      userId: Joi.string().required(),
      title: Joi.string().required(),
      description: Joi.string().required(),
      value: Joi.number().required(),
      dueDate: Joi.string().required(),
    }),
  }),
  MyController.create
);

【问题讨论】:

  • 定义不起作用
  • @AyushGupta,但这是我做错了什么吗?

标签: javascript node.js express joi


【解决方案1】:

问题在于 celebrate 函数创建并返回了一个中间件,因此,celebrate 函数返回的中间件必须作为第二个参数传递给帖子,但您传递的是 一个函数而是执行庆祝方法,因此 validateCreate 应该是:

module.exports = {
    validateCreate: celebrate({...})
}

【讨论】:

    【解决方案2】:

    我认为你在模块导出方面做错了

    试试这样的:

    module.exports = {
        validateCreate: function() {},
        otherMethod: function() {},
    };
    

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 2011-10-09
      • 2017-10-22
      • 2021-09-09
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2021-02-06
      相关资源
      最近更新 更多