简体   繁体   English

对象数组未在内存中更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM