第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Express-Validator 自動生成的錯誤消息

Express-Validator 自動生成的錯誤消息

我想創(chuàng)建一個 Express API 并使用express-validator. 目前這是我的驗證中間件protected validate = async (request: Request, response: Response, next: NextFunction): Promise<void> => {    const validationErrors: Result<ValidationError> = validationResult(request);    if (!validationErrors.isEmpty()) {        response.status(422).json({ errors: validationErrors.array() });    } else {        next();    }};我的基本驗證設(shè)置看起來像public persist = [    body('username')        .isString()        .withMessage('username must be of type string.')        .isLength({ min: 1 })        .withMessage('username must be at least one character long.')        .exists()        .withMessage('username is required.'),    body('password')        .isString()        .withMessage('password must be of type string.')        .isLength({ min: 1 })        .withMessage('password must be at least one character long.')        .exists()        .withMessage('password is required.'),    this.validate,];當(dāng)我調(diào)用POST /users以創(chuàng)建新用戶時,我會收到有關(guān)無效輸入的詳細(xì)錯誤響應(yīng)。當(dāng)我刪除所有自定義錯誤消息時,我收到此響應(yīng)[    {        "msg": "Invalid value",        "param": "username",        "location": "body"    },    {        "msg": "Invalid value",        "param": "password",        "location": "body"    }]有沒有辦法獲得自動生成的錯誤消息,還是我真的必須自己編寫這些錯誤消息?
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊

基本上,驗證器試圖告訴您它認(rèn)為在哪里發(fā)現(xiàn)了錯誤,并且由于它沒有自定義錯誤字符串,因此它退回到(相當(dāng)丑陋的)“元素/位置”方案。


方法一

最合理的方法是為每個字段設(shè)置自定義錯誤消息??吹藉e誤消息相當(dāng)重復(fù),將它們移出驗證器定義是有意義的,并且可能創(chuàng)建一個非常簡單的“getter”函數(shù)來執(zhí)行一些基本模板。然后,您的代碼會變得更好一些:


const MSG_TYPE_STR = '{{field}} must be of type string.'


function getMessage(fieldName: string, msgID: string): string {

   // Templating magic happens here, Regex or whatever other method you prefer

}

...


body('username')

        .isString()

        .withMessage(getMessage('username', MSG_TYPE_STR)


....

這樣,您仍然會收到格式很好的錯誤消息,并且您不會一遍又一遍地復(fù)制粘貼相同的字符串


方法二

可以想象,您可以為驗證錯誤添加后處理(即采用丑陋的輸出并進(jìn)行一些計算并將其轉(zhuǎn)換為更好的輸出)。這將是一種相當(dāng)困難的方法,因為您必須將規(guī)則分解為原子檢查,并且您的驗證方案變得很長,但仍然需要大量工作


方法三

這與其說是一種“方法”,不如說是一種建議 - 您可以切換到不同的驗證器,例如 Joi,它在錯誤消息周圍具有更合理的默認(rèn)邏輯


查看完整回答
反對 回復(fù) 2021-10-29
?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊

只想再提一個機(jī)會。傳遞給客戶端的錯誤鍵碼。例子:

用戶名太短

這可以在客戶端處理,如果您決定在某個時候為您的應(yīng)用程序添加本地化,這將非常有用。您將在前端有一個鍵值對象,該對象根據(jù)用戶選擇的語言處理消息。

祝你好運!


查看完整回答
反對 回復(fù) 2021-10-29
  • 2 回答
  • 0 關(guān)注
  • 251 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號