Null在fs.readFile字符串前面发送

时间:2017-10-03 10:57:50

标签: json node.js post

背景

有一个带有postgres db的现有Django应用程序。无法改变(由于某种原因),用户希望自动上传报告,而不是按钮,他们必须点击上传单个报告(可理解)

我只是编写一个小的Node.js脚本(它将附加到另一个节点App)以将.csv文件读取到json string并通过post发送到db 。只是在我进行自动化之前测试它。

问题

问题是当我发送数据时,数据开头似乎隐藏了?

?Number,Name,Date,Foo,Bar

这会导致读表的问题。

代码我正在使用

const request = require('request')
const fs = require('fs')
fs.readFile('users.csv', utf8, function(err, data) {
    var sentData = JSON.stringify(data)
    request.post('/api/user/set_data').form(sentData)
})

我猜这与"有关,因为它在数据中也会转换为( ) tp %28%29,但没有隐藏\r\n"

之后的最后一个字符

更新

如果我有一点小提琴     fs.readFile(' users.csv',(错误,数据)=> console.log(错误,字符串(数据)))

我可以看到null 'Number,Name,Date,Foo,Bar CSV中没有空值或空值

1 个答案:

答案 0 :(得分:0)

因此,这是导致问题的BOM

您可以在第一个标头前看到空值。 我做了npm i strip-bom

现在有了

const request = require('request')
const fs = require('fs')
const stripBom = require('strip-bom')

fs.readFile('users.csv', utf8, (err, data) => {
    var strippedData = stripBom(data)
    var sentData = JSON.stringify(strippedData)
    request.post(`${location}/set_data`).form(sentData)
}) 

这一切都很有效