我如何創建一個中間件來修剪所有req.body資料,甚至是NESTED資料?
我也接受一個值得信賴的編碼良好的包。
注意我在這里使用true:
app.use(bodyParser.urlencoded({ extended: true }));
這個代碼參考問題
trim: (req, res, next) => {
if (req.method === 'POST') {
for (const [key, value] of Object.entries(req.body)) {
if (typeof value === 'string') req.body[key] = value.trim();
}
}
next();
}
這個可以作業,但不適用于嵌套資料
uj5u.com熱心網友回復:
您可以遞回地遍歷每個物件和陣列并相應地修剪
function trim(body) {
for (const key in body) {
if (typeof body[key] === "object" || Array.isArray(body[key])) {
trim(body[key]);
} else if (typeof body[key] === 'string') {
body[key] = body[key].trim();
}
}
};
handleReq: (req, res, next) => {
if (req.method === 'POST') {
trim(req.body);
}
next();
}
uj5u.com熱心網友回復:
在一行中實作此目的的一種方法是利用 JSON.stringifyreplacer功能中內置的遞回,檢查值是數字或字串,然后修剪它,然后將結果決議回物件。
let obj = {
"a": "f",
"b": {
"c": " g",
"d": "h",
"x": {
"a": [
'1 ', '2 ', '3 '
]
}
},
"e": " value3 "
};
obj = JSON.parse(JSON.stringify(obj, (k, v) => ['string', 'number'].includes(typeof v) ? v.trim() : v))
console.log(obj)
或者您可以使用遞回函式,如果值是物件,則陣列然后呼叫函式,周圍有很多例子,進行搜索。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473947.html
