无法访问nodejs中的数组值

时间:2019-09-20 09:30:50

标签: javascript arrays node.js

我将值数组发送到节点服务器以写入日志文件。

我的$ .ajax帖子在客户端工作。在后端,我将阵列打印到控制台,但是当我尝试使用下面的代码将其写入文件时,在日志文件中得到空白输出。

function log(req,res)
{
  var list = req.body;
  console.log(list);

  for(var i = 0; i < req.body.length; i++)
  fs.writeFileSync("./log.dat", JSON.stringify(list[i]) + "\r\n");
}

该数组是JSON对象的集合,例如控制台上的this

侧面注意:如果我删除JSON.stringify和[i],则可以写入文件。

知道我在做什么错吗?

编辑:

我这样做了,但是在日志文件中却得到“未定义”。

try {
    for(var i = 0; i < 3; i++)
    fs.writeFileSync("./log.dat", list[i] + "\r\n");
} catch (err) {
    console.log('Error writing Metadata.json:' + err.message)
}

我推断出这与循环和数组有关。 我无法按索引引用数组。

我的ajax请求代码:

var items = {logs: foghorn_items};
      path = server + "Foghorn/log";
      $.ajax({
      url: path,
      method: 'POST',
      dataType: 'JSON',
      data: items,
      success: function (data){
        alert('Logs sent to file');
      }
);

更新

由于某种原因,循环不适用于list.length和req.body.length。

3 个答案:

答案 0 :(得分:2)

function log(req,res)
{
  var list = req.body;
  console.log(list);

  for(var i = 0; i < list.logs.length; i++)
  fs.writeFileSync("./log.dat", JSON.stringify(list.logs[i]) + "\r\n");
}

尝试上面的一个

答案 1 :(得分:1)

使用try / catch来显示错误:

try {
    fs.writeFileSync("./log.dat", JSON.stringify(list[i]) + "\r\n");
} catch (err) {
    console.log('Error writing Metadata.json:' + err.message)
}

答案 2 :(得分:0)

使用appendfile方法

fs.appendFile("./log.dat", JSON.stringify(list[i]) + "\r\n",function(err){   
});

使用 writeFileSync 时,在日志文件中会显示最后写入的值。 可能是空白。