我試圖從這個用戶虛擬陣列中找到輸入的電子郵件和密碼的用戶,但我在回傳值中未定義,因此我無法登錄。如果我在控制臺中運行此代碼,它會獲取正確的輸出。有人可以幫助為什么這個 find 函式(在 post req 中)在 Node 中不起作用?
虛擬陣列 -
const users = [
{ id: 1, name: 'Sherry', email:'[email protected]', password: 1234 },
{ id: 2, name: 'harry', email:'[email protected]', password: 1234 },
{ id: 3, name: 'cherry', email:'[email protected]', password: 1234 }
]
獲取請求 -
app.get('/login', (req, res) => {
res.send(`<form method='POST' action='/login'>
<input type="email" name="email" placeholder="Enter email" />
<input type="password" name="password" placeholder="Enter pass" />
<input type="submit" />
</form>`);
})
發布請求 -
app.post('/login', (req,res) => {
const { email, password } = req.body;
console.log(email)
console.log(password)
console.log(users)
let user1 = users.find((user) => user.email === email && user.password === password);
console.log(user1);
if(user1) {
req.session.userId = user.id
return res.redirect('/home')
}
res.redirect('/')
})
問題 - User1 未定義。
uj5u.com熱心網友回復:
我會說password收到的值req.body是 a string。你===比較檢查也是一個變數type,而string和number將不匹配。
選項1
我建議將您的用戶資料password道具更改為string:
const users = [
{ id: 1, name: 'Sherry', email:'[email protected]', password: '1234' },
{ id: 2, name: 'harry', email:'[email protected]', password: '1234' },
{ id: 3, name: 'cherry', email:'[email protected]', password: '1234' }
]
選項 2
如果您只想擁有數字密碼,您還可以更改find函式以正確比較數字:
let user1 = users.find((user) => user.email === email && user.password === parseInt(password));
請讓我知道它是否有效。
uj5u.com熱心網友回復:
// Parse URL-encoded bodies (as sent by HTML forms)
app.use(express.urlencoded());
// Parse JSON bodies (as sent by API clients)
app.use(express.json());
這兩行將確保您的服務器端從 req.body 接收資料。首先,您將資料作為表單資料發送,因此您需要包括
// Parse URL-encoded bodies (as sent by HTML forms)
app.use(express.urlencoded());
這將允許您從 req.body 讀取資料。
app.post('/login', (req,res) => {
const { email, password } = req.body;
console.log('req',req.body)
console.log("email",email)
console.log("password",password)
let index = users.findIndex((user) => user.email === email && user.password == password);
console.log("index",index)
let user1= users[index]
console.log("user1",user1);
if(user1) {
console.log("HERE=======================")
req.session.userId = user1.id
return res.redirect('/home')
}
res.redirect('/')
})
現在試試上面的代碼快照,希望它會幫助你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/363247.html
下一篇:摩卡測驗通過但斷言或期望失敗
