findIndex方法在ExpressJS服务器更新方法中给出未定义

时间:2019-05-28 15:32:02

标签: javascript express

我想通过HTTP请求更新Express JS服务器中的用户对象。放置请求将使用用户ID发送到服务器。我想使用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;`

ID在阵列列表中。因此代码之前可以工作,但我再次尝试过,但没有成功。我想知道为什么。

1 个答案:

答案 0 :(得分:0)

是,可以成功重新创建错误。通过替换此代码

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

使用此代码,

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

用户可以成功更新!

我首先发现的原因是,“ ==”符号可用于比较字符串和数字,但不能用于“ ===”。第二个是,它应该是参数,而不是参数,因为它已被弃用,而且通过使用参数,它将直接查看路径参数。希望我的回答和解释对您很清楚!