exports.edit = function (student, callback) {
fs.readFile(dbPath, 'utf8', function (err, data) {
if (err) {
return callback(err)
}
var students = JSON.parse(data).students
// 你要修改谁,就需要把谁找出来
// EcmaScript 6 中的一个数组方法:find
// 需要接收一个函数作为参数
// 当某个遍历项符合 item.id === student.id 条件的时候,find 会终止遍历,同时返回遍历项
student.id = parseInt(student.id)
var ret = students.find(function (item) {
return item.id === student.id
})
console.log(ret + 'dsafd')
// 遍历修改后的student对象,然后覆盖原来的值
for (var key in student) {
ret[key] = student[key]
}
var fileData = JSON.stringify({
students: students
})
fs.writeFile(dbPath, fileData, function (err) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
这里面的student.id事先做了转换,如果写成下面的样子判断就会出错,具体原因还不知道,哪位看见了可以说一下原理。
return item.id === student.id
return item.id === parseInt(student.id) //这样
console.log(ret + 'dsafd')
[object Object]dsafd