【问题标题】:Node Js read last line of a text file outputs Object Promise节点 Js 读取文本文件的最后一行输出 Object Promise
【发布时间】:2018-09-23 13:33:57
【问题描述】:

我有一个使用 Node Js 运行的本地服务器。在我的第一页上,用户输入了一个用户 ID,然后我将其保存在一个文本文件中。在下一页上,我想将用户 ID 连同其他一些信息一起附加到文本文件中。我使用该选项仅读取最后一行,因此我附加了正确的用户 ID,而不是所有输入的 ID。当我将最后一行记录到控制台时,它会正确输出。问题是当我尝试将其附加到新文本文件时,它显示为:“[object Promise]”并且不显示用户 ID(而其余信息已正确附加)。

app.post('/userID', function(req, res){

  var userID= req.body.userID + ';' + '\n';
  var data = fs.appendFileSync('userID.txt', userID, 'utf8');

  return res.sendfile('main.html');
});


app.post('/submit', function(req, res){

  var id = readLastLines.read('userID.txt', 1);
  var option = [ req.body.option],
  var toADD = fs.readFile('data/data1.txt','utf-8',(err, file) => fs.appendFileSync('output.txt',file.split('\n').map( (line) =>
            id + line + option.shift()).join('\n'),(err) => {}
              ));

  res.sendfile('main2.html');
});

提前谢谢你!

【问题讨论】:

  • /submit 路由是附加的吗?
  • @Pogrindis 是的,这是 /submit。

标签: html node.js


【解决方案1】:

因此,.map 的返回值是一个通过映射值数组实现的承诺。

这可能就是您看到添加[object Promise] 的原因,它在写入时尚未解决。

为了清楚起见,您可以尝试将其隔开一点,但类似于以下内容:

var option = [ req.body.option],
var toADD = fs.readFile('data/data1.txt','utf-8',(err, file) => fs.appendFileSync('output.txt',file.split('\n').map( (line) =>
        id + line + option.shift()).then((res)=>{
            res.join('\n'),(err) => {};
            return res;
            })
        ));

基本上,map 方法正在写入文件,但它本身是一个承诺对象,这需要在附加之前先解决。

我还没有测试上面的代码,但我很快就会有机会。

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 2014-06-06
    • 1970-01-01
    • 2023-04-07
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多