Метод findIndex дает неопределенный в методе обновления сервера ExpressJS - PullRequest
0 голосов
/ 28 мая 2019

Я хочу обновить пользовательский объект на экспресс-сервере js из HTTP-запроса.Запрос на отправку отправляется на сервер с идентификатором пользователя.Я хочу извлечь пользовательский объект из пользовательского массива с помощью метода findIndex, но он возвращает неопределенное значение

здесь есть сервер ExpressJS

const express = require('express');
const BodyParser = require('body-parser');
const cors =require('cors');
const User = require('./user');
const PORT = 4000;
const app =express();
const appRoute = express.Router();
const  userarray = [];

app.use(cors());
app.use(BodyParser.json());

app.use('/api/user',appRoute);

app.listen(PORT ,function () {
    console.log("Sever is running on : " + PORT);
});


appRoute.route('/update/:id').put(function (req,res){
    try{

        const index = userarray.findIndex(instance => instance.id === req.param.id);
        userarray[index].firstName = req.body.fname;
        userarray[index].lastName = req.body.lname;
        userarray[index].BirtDay = req.body.date;

        res.status(200).send({message:"User updated"})

    }catch (e) {
        res.status(400).send({message:"Unable to get the users.ERROR:" +e})
    }
});

Ее модель пользователя

const  User = function(fname,lname,bday,id){

    this.firstname =  fname;
    this.lastname = lname;
    this.Birthday = bday;
    this.ID =id;
}

module.exports = User;`

Идентификатор есть в списке массивов.Так что коды работают раньше, но я попробовал еще раз, и это не сработалоЯ хочу знать, почему.

1 Ответ

0 голосов
/ 28 мая 2019

Да, ошибка может быть успешно воссоздана. Заменив этот код

const index = userarray.findIndex(instance => instance.id === req.param.id);

Используя этот код,

const index = userarray.findIndex(instance => instance.id == req.params.id);

Пользователь может быть успешно обновлен !!

Первой причиной, по которой я нашел, было то, что знак "==" можно использовать для сравнения строк и чисел, но не "===". Во-вторых, это должны быть params, а не param, потому что теперь он устарел, а также, используя params, он напрямую изучит параметры маршрута. Я надеюсь, что мой ответ и объяснение вам ясно ?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...