簡體   English   中英

從一個文件擴展所有Joi驗證包,並使用const Joi = require('joi')導入全部

[英]Extends all Joi Validation Package from one file and Import all with const Joi = require('joi')

我如何在一個文件下導出joi-phone-number包(如joi-object示例)並按以下方式導入和使用? 以下是我的validation.js,並導入index.js。

// validation.js
const Joi = require('joi');
module.exports = function({
  Joi.objectId = require('joi-objectid')(Joi);
  // Here i want to import phone number validation.
})

現在,我創建兩個常量來驗證objectid和phone。

// schema.js
const Joi = require('joi');
const MyJoi = Joi.extend(require('joi-phone-number')); // I want to add this line in validation.js.
exports.validate = function(data) {
   const schema = {
       name: MyJoi.string().required(),
       hp: MyJoi.string().phoneNumber({ defaultCountry: 'US', format: 'e164})
   }
}

我想將所有Joi軟件包放在一個文件中,然后導入該文件以使用不同類型的驗證。

// What I want to achieve
const Joi = require('joi)
exports.validate = function(data) {
   const schema = {
       id: Joi.ObjectId(),
       name: Joi.string().required(),
       hp: Joi.string().phoneNumber()
       }
}

joi-objectId看起來很舊,沒有使用Joi.extend() api。 您可以簡化事情並擺脫這種依賴。 它唯一要做的就是使用以下命令驗證字符串:

Joi.string().regex(/^[0-9a-fA-F]{24}$/);
// validate.js
const Joi = require("joi");
const MyJoi = Joi.extend(require("joi-phone-number"));

exports.validate = function (data) {
  const schema = {
    id: MyJoi.string().regex(/^[0-9a-fA-F]{24}$/),
    name: MyJoi.string().required(),
    hp: MyJoi.string().phoneNumber()
  };

  return MyJoi.validate(data, schema);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM