[英]Object array not being updated in memory
I have an employees array, 我有一个员工队伍,
[
{
"employeeNum": 1,
"firstName": "Foster",
"lastName": "Thorburn",
"email": "fthorburn0@myCompany.com",
"SSN": "935-74-9919",
"addressStreet": "8 Arapahoe Park",
"addresCity": "New York",
"addressState": "NY",
"addressPostal": "20719",
"maritalStatus": "single",
"isManager": true,
"employeeManagerNum": null,
"status": "Full Time",
"department": 2,
"hireDate": "4/30/2014"
},
{
"employeeNum": 2,
"firstName": "Emmy",
"lastName": "Trehearne",
"email": "etrehearne1@myCompany.com",
"SSN": "906-43-6273",
"addressStreet": "66965 Shelley Circle",
"addresCity": "New York",
"addressState": "NY",
"addressPostal": "33605",
"maritalStatus": "single",
"isManager": true,
"employeeManagerNum": null,
"status": "Full Time",
"department": 2,
"hireDate": "6/25/2016"
},
etc
]
And a route in my server.js
file, 在我的server.js
文件中有一条路由,
app.post("/employee/update", (req, res) => {
console.log(req.body);
data.updateEmployee(req.body).then((data) => {
res.redirect("/employees");
}).catch(function(err) {
console.log("An error was encountered: " + err);
})
});
And updateEmployee()
is defined as, 并且updateEmployee()
定义为
module.exports.updateEmployee = function(employeeData) {
return new Promise((resolve, reject) => {
let flag = false;
for (let i = 0; i < employees.length; i++) {
if (employees[i].employeeNum == employeeData.employeeNum) {
employees[i] = employeeData;
employees[i].employeeNum = i + 1;
flag = true;
}
}
if(flag) {
console.log("NO DATA FOUND");
reject("No data found");
} else {
resolve();
}
});
}
The console.log(req.body);
console.log(req.body);
line executes properly in my app.post
route. 行在我的app.post
路由中正确执行。 Is it something to do with employeeNum
? 与employeeNum
吗? I've tried doing something like this, 我尝试做这样的事情,
for (let i = 0; i < employees.length; i++) {
if (employees[i].employeeNum == employeeData.employeeNum) {
employees[i] = employeeData;
employees[i].employeeNum = i + 1;
flag = true;
console.log(employees[i] + "\nDKJSFSFS");
}
}
But the console.log(...)
in the loop doesn't even print.. Any thoughts? 但是循环中的console.log(...)
甚至无法打印。
Figured it out 弄清楚了
In my form for updating an employee, the employeeNum
isnt an accessible value; 在我更新员工的表格中, employeeNum
不是可访问的值; it functions as an index. 它用作索引。 So therefore, I would not be able to compare 因此,我将无法比较
(employees[i].employeeNum == employeeData.employeeNum)
I fixed it by comparing the SSN value. 我通过比较SSN值来解决它。
for (let i = 0; i < employees.length; i++) {
if (employees[i].SSN == employeeData.SSN) {
employees[i] = employeeData;
employees[i].employeeNum = i + 1;
flag = true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.