[英]How to import functions from another file in NodeJS?
我是 NodeJS 的新手,我在這方面有點掙扎。 我正在使用Express並驗證數據,我正在使用Celebrate 。
我有一個route.js文件,我在其中發出POST請求,使用另一個文件中的 function 來執行此操作(它是來自MyController的創建function。它工作正常!但是當我嘗試對我的驗證器,它不起作用。
那么讓我們看一下代碼。
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
);
the problem is that the celebrate function creates and returns a middleware, so the middleware returned by the celebrate function must be passed as second parameter to the post but you're passing a function that execute the celebrate method instead, so validateCreate should be:
module.exports = {
validateCreate: celebrate({...})
}
我認為您在模塊導出方面做錯了
嘗試這樣的事情:
module.exports = {
validateCreate: function() {},
otherMethod: function() {},
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.