我堅持使用查找功能通過 id 查找用戶。我的這個getUsers()函式回傳一個物件陣列。
function getUsers(filter, limit, offset) {
let userList = [];
for (let i = 0; i < 100; i ) {
let user = {};
user.id = i;
user.firstname = 'firstname_' i;
user.lastname = 'lastname' i;
user.email = user.userId "@hotmail.com";
userList.push(user);
}
return JSON.stringify(userList);
}
我想在這里通過其 id 查找用戶,但它顯示未找到資料:
app.get('/shops/:shopid/users/:userId', (req, res) => {
let users = getUsers(undefined, undefined, undefined);
const result = users.find(u => u.id === parseInt(req.params.userId));
if(!result) res.status(404).send('Data not found');
res.send(result);
});
uj5u.com熱心網友回復:
因為getUsers回傳 JSON 字串而不是陣列。該find方法僅適用于陣列。所以你有幾個選擇。
getUSers選項1:只需在函式中回傳陣列
function getUsers(filter, limit, offset) {
let userList = [];
for (let i = 0; i < 100; i ) {
let user = {};
user.id = i;
user.firstname = 'firstname_' i;
user.lastname = 'lastname' i;
user.email = user.userId "@hotmail.com";
userList.push(user);
}
return userList;
}
選項 2:JSON.parse呼叫時使用getUsers
app.get('/shops/:shopid/users/:userId', (req, res) => {
let users = JSON.parse(getUsers(undefined, undefined, undefined));
const result = users.find(u => u.id === parseInt(req.params.userId));
if(!result) res.status(404).send('Data not found');
res.send(result);
});
uj5u.com熱心網友回復:
你的問題
getUsers()正在回傳 astring但您想要一個用戶陣列,而不是字串,因為 astring沒有方法find()。
只需JSON.stringify()在您的方法中洗掉getUsers()即可。
function getUsers(filter, limit, offset) {
let userList = [];
for (let i = 0; i < 100; i ) {
let user = {};
user.id = i;
user.firstname = "firstname_" i;
user.lastname = "lastname" i;
user.email = user.userId "@hotmail.com";
userList.push(user);
}
// remove a list instead of a string
return userList;
}
let users = getUsers();
console.log(users);
const result = users.find((u) => u.id === 0);
if (!result) console.log(`User ${result.id} was not found!`);
else console.log(`User ${result.id} was found!`);
一些備注
沒有必要顯式呼叫帶有所有引數的函式,因為如果您不提供它們,undefined它們會自動出現,這樣就足夠了。undefinedgetUsers()
使用函式和模板字串getUsers()可以使您的方法更加簡潔易讀。map()
function getUsers(filter, limit, offset) {
return [...new Array(100)].map((_, index) => ({
id: index,
firstname: `firstname_${index}`,
lastname: `lastname_${index}`,
email: `${index}@hotmail.com`,
}))
}
let users = getUsers();
console.log(users);
const result = users.find((u) => u.id === 0);
if (!result) console.log(`User ${result.id} was not found!`);
else console.log(`User ${result.id} was found!`);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480270.html
標籤:javascript 节点.js 表示
