我有一个小的JSON文件
{
"users": [
{
"id": 1111,
"name": "Foo",
"gold": 2
},{
"id": 2222,
"name": "Bar",
"gold": 7
}
]
}
并且想要操纵由其id。
选择的一个特定对象的数据我想
所以我选择了这条路线,使用Ajax调用
app.get('/incG/:id', function (req, res) {
fs.readFile('./database.json', 'utf8', function (err, data) {
var json = JSON.parse(data); // Read the data
var users = json.users; // Get all users
var user = users.find(u => u.id === Number(req.params.id)); // get the user by id
user.gold++; // increase his value
fs.writeFile('./database.json', , (err) => { // the second parameter is missing!
res.send(user.gold); // send a response to the client
});
});
});
如您所见,使用fs.writeFile(database, , (err) => {
时缺少第二个参数。
我必须在那里传递什么?我只想更新一个特定的用户对象(一个特定的值)。
修改
当传入JSON.stringify(user)
作为参数时,我删除文件中的所有数据,然后记下新对象。所以这可能不会这样。
答案 0 :(得分:1)
试试这个,
fs.readFile('./database.json', 'utf8', function (err, data) {
var json = JSON.parse(data); // Read the data
var users = json.users; // Get all users
var userGold;
users.find(u => {
if (u.id === Number(req.params.id)) {
userGold = u.gold++;
}
});
users = JSON.stringify(users);
fs.writeFile('./database.json', users, (err) => {
res.send(userGold);
});
});