【问题标题】:JavaScript express, node and CSVtoJSONJavaScript express、node 和 CSVtoJSON
【发布时间】:2019-02-04 09:21:06
【问题描述】:

我目前正在为一位同事开发一个“Dupe Finder”网络应用程序。这是我第一次使用“csvtojson”包。

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

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

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()
        })
    },
}

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

【问题讨论】:

    标签: javascript node.js api express promise


    【解决方案1】:

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

    它返回promise,所以你需要异步处理它

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

    MDN link

    【讨论】:

    • 最后一个问题,我知道这会发生,因为我之前在 Promise 中看到过。现在我有了这个对象,我在这里有一个随机密钥:prnt.sc/koabft 8008336917。这不是我的 csv 文件中的任何地方或任何地方的“密钥”。有没有办法“剥离”那个密钥?
    • 我相信 key 是您 csv 的第一行。看看库 github.com/Keyang/node-csvtojson#header-row 的标题选项
    猜你喜欢
    • 2014-10-15
    • 2019-08-15
    • 2019-06-02
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2016-06-25
    • 2016-06-14
    • 2018-06-07
    相关资源
    最近更新 更多