JavaScript express,节点和CSVtoJSON

时间:2018-08-29 14:28:43

标签: javascript node.js api express promise

我目前正在为同事开发“ Dupe Finder”网络应用。这是我第一次使用'csvtojson'软件包。

我从服务器上的文件读取得很好,但是当我将响应发送回客户端(理想情况下包含json对象)时,我收到了这个非常奇怪的控制台日志,我不确定它是否正确:

console.log(res.json())

要获得此响应,我在主页上有一个按钮,当单击该按钮时,客户端会在服务器的主目录(称为“ / getnums”)上发出http请求。该请求从CSV读取,然后应该返回,并且obj及其内容。在截图中 是这样,如果我单击promiseValue旁边的勾号,它将给我一个数组。但是我不确定为什么它会返回一个承诺。

api.js:

var CSVDATA = () => {
fetch('/getnums')
    .then(res => {
        console.log(res.json())
    })
}

export default {
    CSVDATA,
}

'/ getnums'转到我的路由器,它就是router.get('/',mainController.getNums)

在控制器中是读取开始的地方:

const csv = require('csvtojson')

module.exports = {
getNums: (req, res, next) => {
    const csvFilePath = `${__dirname}/../../client/readFrom/main.csv`
    csv().fromFile(csvFilePath)
        .then(jsonObj => {
            return res.status(200).json(jsonObj)
        })
        .catch(e => {
            req.error = e
            next()
        })
    },
}

任何人都知道这里可能会发生什么?

1 个答案:

答案 0 :(得分:2)

.json()的工作原理就是这样。

它返回promise,因此您需要异步处理

var CSVDATA = () => {
    fetch('/getnums')
        .then(res => res.json())
        .then(json => console.log(json));
}

export default {
    CSVDATA,
}

MDN link