繁体   English   中英

类型错误:table.map 不是 function

[英]TypeError: table.map is not a function

我只是想从 CSV 文件中获取数据,我必须在其中循环对象数组。 但是循环没有发生,它抛出的 array.map 或 array.forEach 不是 function。 HTML 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js@3.1.0/dist/chart.min.js"></script>
</head>
<body>
    <canvas id="chart" width="400" height="400">

    </canvas>
    <script>
 
        fetchData();
        async function fetchData(){
          try {
            const data = await fetch('http://localhost:3000/');
            const table = await data.text();
            console.log(table);
            table.map(item => {
                console.log(item["Year"])
            });
            
          } catch (error) {
              console.error(error);
          }

        }
    </script>
</body>
</html>

后端 node.js 文件:

const express = require('express');
var app = express();
const cors = require('cors')
var fs = require('fs').promises;
var parse = require('csv-parse/lib/sync');
app.get('/',cors(), async (req, res) => {
  (async function () {
    const fileContent = await fs.readFile('test.csv');
    const records = parse(fileContent,{columns:true});
    res.send(records);
})();
});
app.listen('3000',() => console.log('listening on 3000'));

获取的数据如下所示: [{"Year":"1880","Glob":"-.16","NHem":"-.27","SHem":"-.04","24N- 90N":"-.35","24S-24N":"-.13","90S-24S":"-.01","64N-90N":"-.81","44N-64N" :"-.46","24N-44N":"-.26","EQU-24N":"-.15","24S-EQU":"-.10","44S-24S":" -.03","64S-44S":".05","90S-64S":".65"},{"Year":"1881","Glob":"-.08","NHem" :"-.17","SHem":".01","24N-90N":"-.33","24S-24N":".10","90S-24S":"-.06" ,"64N-90N":"-.92","44N-64N":"-.43","24N-44N":"-.18","EQU-24N":".10","24S -EQU":".11","44S-24S":"-.05","64S-44S":"-.07","90S-64S":".58"},{"年份": "1882","Glob":"-.10","NHem":"-.20","SHem":"-.01","24N-90N":"-.29","24S-24N ":"-.05","90S-24S":".02","64N-90N":"-1.42","44N-64N":"-.25","24N-44N":"- .12","EQU-24N":"-.05","24S-EQU":"-.05","44S-24S":".02","64S-44S":".04", "90S-64S":".61"},.....(更多对象)]

您可以尝试JSON.parse(table).map(... 。从错误看来,表不是数组类型。

const table = await data.text(); 

是错的

尝试使用 JSON.parse

后端未将文件作为 object 发送。 尝试这个

const express = require('express');
var app = express();
const csvFilePath='./test.csv'
const csv=require('csvtojson')
csv()
.fromFile(csvFilePath)
 
const getData = async ()=>{
    const jsonArray= await csv().fromFile(csvFilePath);
    return jsonArray
}
// Async / await usage
app.get('/', async (req, res)=>{
    let data = await getData()
    return res.send(data)
 })

app.listen('3000',() => console.log('listening on 3000'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM