我将值数组发送到节点服务器以写入日志文件。
我的$ .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。
答案 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 时,在日志文件中会显示最后写入的值。 可能是空白。