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

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

javascript - JavaScript Express,节点和CSVtoJSON-LMLPHP

为了获得此响应,我在主页上有一个按钮,单击该按钮时,客户端会在服务器的主目录(称为“ / 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()
        })
    },
}


有人知道这里会发生什么吗?

最佳答案

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

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

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

export default {
    CSVDATA,
}


MDN link

07-28 10:08