我想用来自server.js中req.body的新数据填充employeeData



我想使用函数参数从函数中填充req.body来执行更新,但它不起作用。下面是我的代码

data-service.js

var employees = [];
//Here is a function that populate the employees array
function initialize() {
return new Promise((resolve, reject) => {
fs.readFile('./data/employees.json', (err, data) => {
if (err) {
reject(err);
} else {
try {
employees = JSON.parse(data);
resolve(employees);
} catch (err) {
reject('Unable to read file');
}
}
});
fs.readFile('./data/departments.json', (err, data) => {
if (err) {
reject(err);
} else {
try {
departments = JSON.parse(data);
resolve(departments);
} catch (err) {
reject('Unable to read file');
}
}
});
});
};

如果id与数组中员工的id匹配,则执行更新的函数如下

function updateEmployee(employeeData) {
return new Promise((resolve, reject) => {
try {
const newData = [];
employees.forEach((element) => {
if (element.employeeNum == employeeData.employeeNum) {
//Here I want to populate the employeeData with the new data from req.body in my server.js
}
});
} catch (error) {
reject(error);
}
});
}

这里是处理server.js 中更新的路由

app.post('/employee/update', (req, res) => {
dataService.updateEmployee(req.body).then(function(data) {
res.redirect("/employees");
}).catch((err) => {
console.log(err);
});
});

/这里我想用来自server.js 中req.body的新数据填充employeeData

这没有道理。req.body是进入服务器的请求的主体。使用employeeData中的数据修改employee(employees数组中的对象(是有意义的,但不是相反。类似于:

function updateEmployee(employeeData) {
// Not clear why you're using a promise here, but I assume it's to
// emulate some storage update that would be asynchronous...
return new Promise((resolve, reject) => {
try {
const newData = [];
for (const employee of employees) {
if (employee.employeeNum == employeeData.employeeNum) {
// Perhaps
employeePropertyNames.forEach(name => {
// There may be a couple you want 
if (employeeData.hasOwnProperty(name)) {
element[name] = employeeData[name];
}
});
// Or: Object.assign(employee, employeeData); -- But NOT A GOOD IDEA
resolve(employee);
break;
}
}
} catch (error) {
reject(error);
}
});
}

其中employeePropertyNames是要允许根据客户端请求更新的员工属性的名称列表。

使用盲Object.assign不是一个好主意,因为它可以让客户端请求进行任何想要的更改(包括添加全新的属性(,其中可能不应该更改某些内容(如employeeNum(。

最新更新