簡體   English   中英

我如何確定我的 typeof 確實有效?

[英]How can i be sure that my typeof is really working?

(這里是超初級開發人員)

我有這些代碼..使用 typeof 來驗證客戶端是否放置了一個字符串..否則將不會執行任務並將發送錯誤 400...事情是我的 dev-Front colegue ..他是在用戶名中輸入一個字符串,他有一個 400 錯誤。

-- 如果有另一種方法來檢查輸入是否是字符串。??

它是一個大型驗證器,同時檢查其他類型的輸入。所以也許你的答案可能會影響所有代碼。

謝謝

有人可以解釋為什么

 function tappingValidator(req, res, next) {
  if (typeof req.body.username !== "string") {
    const msg = JSON.stringify({ msg: "username has to be a string" });
    const err = new Error(msg);
    err.statusCode = 400;
    return next(err);
  }};

將 function 添加到您的代碼庫

function isString(arg) {
   return typeof arg === 'string' || arg instanceof String
}

然后在 if 語句中使用它,如下所示:

if(!isString(req.body.username)) {
   // it is not a string

   // ...
}

任何字符序列,包括純數字序列,都是字符串。 是上下文和/或語法造成了數字和字符串之間的區別。

const a = 123;
const b = '123';
console.log(typeof a); // displays "number"
console.log(typeof b); // display "string"

無論該字符串的內容是什么, req.body.username都可能是字符串數據類型(來自 web 表單)。

如果您想確保字符串不以數字開頭,則此正則表達式測試將起作用:

  if (/^[\d]/.test(req.body.username)) {
    const msg = JSON.stringify({ msg: "username shouldn't start with a digit" });

如果您只是想排除純數字的情況,還有其他測試,但允許以數字開頭。

暫無
暫無

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

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