我想通过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在阵列列表中。因此代码之前可以工作,但我再次尝试过,但没有成功。我想知道为什么。
答案 0 :(得分:0)
是,可以成功重新创建错误。通过替换此代码
const index = userarray.findIndex(instance => instance.id === req.param.id);
使用此代码,
const index = userarray.findIndex(instance => instance.id == req.params.id);
用户可以成功更新!
我首先发现的原因是,“ ==”符号可用于比较字符串和数字,但不能用于“ ===”。第二个是,它应该是参数,而不是参数,因为它已被弃用,而且通过使用参数,它将直接查看路径参数。希望我的回答和解释对您很清楚!