我有一个运行Node Js的本地服务器。在我的第一页上,用户输入用户ID并将其保存在文本文件中。在下一页中,我想将userID与其他一些信息一起附加到文本文件中。我使用该选项只读取最后一行,因此我附加了正确的用户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');
});
提前谢谢!
答案 0 :(得分:0)
因此,.map
的返回值是一个使用映射值数组实现的promise。
这可能就是为什么你看到[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
方法正在写入文件,但它本身是一个promise对象,这需要在追加之前先解决。
我还没有测试过上面的代码,但是当我有机会时我会很快。