如何从 NodeJS 中的另一个文件导入函数?
How to import functions from another file in NodeJS?
我是 NodeJS 的新手,我在这方面遇到了一些困难。我正在使用 Express 并为了验证数据,我正在使用 Celebrate.
我有一个 route.js 文件,我在其中发出 POST 请求,使用来自另一个文件的函数(它是 create 函数,来自 MyController。它工作正常!但是当我尝试做同样的事情时我的 验证器,它不起作用。
那么让我们看一下代码。
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
);
我认为你在模块导出方面做错了
尝试这样的事情:
module.exports = {
validateCreate: function() {},
otherMethod: function() {},
};
问题在于 celebrate 函数创建并 returns 一个中间件,因此 celebrate 函数返回的中间件必须作为第二个参数传递给 post 但你正在传递 一个执行庆祝方法的函数 ,所以 validateCreate 应该是:
module.exports = {
validateCreate: celebrate({...})
}
我是 NodeJS 的新手,我在这方面遇到了一些困难。我正在使用 Express 并为了验证数据,我正在使用 Celebrate.
我有一个 route.js 文件,我在其中发出 POST 请求,使用来自另一个文件的函数(它是 create 函数,来自 MyController。它工作正常!但是当我尝试做同样的事情时我的 验证器,它不起作用。
那么让我们看一下代码。
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
);
我认为你在模块导出方面做错了
尝试这样的事情:
module.exports = {
validateCreate: function() {},
otherMethod: function() {},
};
问题在于 celebrate 函数创建并 returns 一个中间件,因此 celebrate 函数返回的中间件必须作为第二个参数传递给 post 但你正在传递 一个执行庆祝方法的函数 ,所以 validateCreate 应该是:
module.exports = {
validateCreate: celebrate({...})
}