У объектов в вашем массиве нет поля 'id', поэтому ничто не соответствует фильтру.
То, что вы говорите: «Найдите объект в этом массиве, который имеет поле« id »X», где X - req.params.id. Это не соответствует никому, потому что ваши объекты имеют только поля 'name', 'email' и 'status', то есть нет поля 'id', поэтому при вызове метода filter ничего не сопоставляется.
Это должно стать понятным, если вы выполните небольшой тест ..
Замените это
app.get('/api/members/:id', (req, res) => {
res.json(members.filter(member => member.id === parseInt(req.params.id)));
});
этим
app.get('/api/members/:email', (req, res) => {
res.json(members.filter(member => member.email === req.params.email));
});
И когда вы отправляете запрос, отправьте 'josh@mail.com' в качестве параметра запроса, вы должны найти, что эта запись возвращается:
http://localhost: 5000 / api / members / josh@mail.com
{
name:"josh",
email:"josh@mail.com",
status: "active"
}
Это происходит потому, что у ваших объектов есть поле электронной почты, и вы соответствуете этому, и есть объект, у которого поле электронной почты имеет значение 'josh@mail.com'.
Итак, чтобы повторить Ваш текущий код не работает, потому что вы пытаетесь сопоставить ваши объекты с заданным полем id, но они не содержат поля id.
Если вы изменили структуру данных, чтобы она была чем-то как
{
id: 1, // Added 'id' field
name:"josh",
email:"josh@mail.com",
status: "active"
}
Тогда у вас будет что сопоставить, в этом примере, если вы отправили «1» в качестве идентификатора, тогда ваш код должен соответствовать этому документу.
Надежда, которая имеет смысл и имеет некоторое значение.