Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JSON读取数据,对其进行操作并将其写回NodeJs_Javascript_Json_Node.js - Fatal编程技术网

Javascript 从JSON读取数据,对其进行操作并将其写回NodeJs

Javascript 从JSON读取数据,对其进行操作并将其写回NodeJs,javascript,json,node.js,Javascript,Json,Node.js,我有一个包含此内容的小JSON文件 { "users": [ { "id": 1111, "name": "Foo", "gold": 2 },{ "id": 2222, "name": "Bar", "gold": 7 } ] } 当使用Ajax时,我称之为这条路线 app.get('/incG/:id', function (req, res) { fs.writeFile('./d

我有一个包含此内容的小JSON文件

{
  "users": [
    {
      "id": 1111,
      "name": "Foo",
      "gold": 2
    },{
      "id": 2222,
      "name": "Bar",
      "gold": 7
    }
  ]
}
当使用Ajax时,我称之为这条路线

app.get('/incG/:id', function (req, res) {
  fs.writeFile('./database.json', 'utf8', function (err, data) {
    var json = JSON.parse(data); // get the data
    var users = json.users; // get all users
    var user = users.find(u => u.id === Number(req.params.id)); // get a user by id
    user.gold++; // increase his gold value
    res.send(user.gold); // send a response to the client
  });
});
运行服务器时,我收到此错误消息

undefined:1
utf8
^

SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)
    at ... \app.js:23:21
    at tryToString (fs.js:449:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436:12)

但我认为将
json
作为数据对象传递是错误的。文件内容被“销毁”

要写入文件,只需遵循节点文档:

app.get('/incG/:id', function (req, res) {
  fs.writeFile('./database.json', 'utf8', function (err, data) {

    var users = json.users; // get all users
    var user = users.find(u => u.id === Number(req.params.id));
    user.gold++; // increase his gold value

    fs.writeFile('database.json', myJSON, (err) => {
      if (err) throw err;
      res.send(user.gold);
    });
});
在web服务器上读取文件/写入文件时,更好的方法是使用
,这样做不会消耗大量内存

你可以在这篇很棒的帖子中阅读更多关于它的内容:


我相信您使用的
writeFile
是错误的。根据,writeFile的第二个参数应该是要写入的数据。见下文:

fs.writeFile('message.txt', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});

是的,我是新来的。我想使用
writeFile
第一个readfile,获取所有内容;根据您的意愿对其进行解析,然后编写。问题在于,消息表明JSON中没有定义“u”。对不起,这对我来说是新的,我想使用
writeFile
您有没有给我举个例子?我的代码似乎错了,我只想将数据写入JSON文件啊,你的问题清楚地说明了
读取数据
,所以请相应地更新它。我会更新我的答案。对不起,请您解释一下
src.pipe(manufactedata.pipe(res)对我来说?阅读我链接的文章,它解释了比stackoverflow上的一个小评论更详细的事情。可以将流视为数据块,但它们不必一次全部可用,您可以根据消费者的需求以块的形式发送它们。对于您的小JSON对象,我认为只需编写没有流的文件就可以了,一般来说了解流就好了!很高兴学习。谢谢,但是我应该在哪里指定,我要处理哪些数据?
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});