Node.js 尝试从API提取数据时创建多个副本

Node.js 尝试从API提取数据时创建多个副本,node.js,web-scraping,Node.js,Web Scraping,试图从node.js API中提取数据 但是,当我尝试基于多个globalid(我使用global id从API获取输出)提取数据时,在合并数据集时,我会不断得到多个重复数据。不知道我做错了什么,在实际的全局_id数据集中没有重复项,已经检查了多次 这是我的代码: const boxrec = require("boxrec").Boxrec; const fastcsv = require('fast-csv'); const fs = require('fs'); async functi

试图从node.js API中提取数据

但是,当我尝试基于多个globalid(我使用global id从API获取输出)提取数据时,在合并数据集时,我会不断得到多个重复数据。不知道我做错了什么,在实际的全局_id数据集中没有重复项,已经检查了多次

这是我的代码:

const boxrec = require("boxrec").Boxrec;
const fastcsv = require('fast-csv');
const fs = require('fs');
async function getCookieJar(){
    try {
        const cookieJar = await boxrec.login('**','***');
        return cookieJar;
    } catch (e) {
        console.log("Login error: " + e);
    }
};
async function writeData() {
    const csv = require('csv-parser')
    const results = [];
    fs.createReadStream('C:\\Users\\User\\Documents\\completed16.csv')
        .pipe(csv())
        .on('data',(data)=> results.push(data))
        .on('end', async () => {
          const cookieJar = await getCookieJar();
          const promises = [];
          results.forEach((data) => {
            promises.push(boxrec.getPersonById(cookieJar,data.global_id));
          })
          const fighters = await Promise.all(promises); 
          fighters.forEach((fighter) => {
              let data = '';
              for (const key in fighter.output) {
                  if (Array.isArray(fighter.output[key])) {
                      data += JSON.stringify(fighter.output[key]) + ',';
                  } else if (typeof fighter.output[key] === 'object') {
                      data += JSON.stringify(fighter.output[key]) + ',';
                  } else {
                      data += fighter.output[key] + ',';
                  }
              }
              data = data.replace(/(^,)|(,$)/g, "");
              data += '\n';

              fs.appendFile('C:\\Users\\User\\Documents\\fin16.csv',data, (err) => {
                  if (err) throw err;
              });
          });
        });
    };
try {
    writeData();
} catch (error) {
    console.log("Error in writeData: " + error);
以下是completed16中的数据示例:

并非每一行都是重复的,但例如completed6有100个唯一的GlobalID,创建的输出将包含100行,但某些全局ID会重复多次(对于某些全局ID,重复次数高达13次)


我给API的作者发了电子邮件,他认为当我将数据写入csv时可能会出现问题,这只是一个观察:当您附加“数据”事件侦听器时,您会收到数据块()。但是对于每个数据块(其大小和结构您事先不知道),您都在调用函数(
getPersonById
)好像您有一行输入电子表格。我预计一些调用会失败,所以我有点惊讶。@sturmer您建议我做什么?不确定。您应该以某种方式确保整行可用。如果您在每个
数据
事件中打印数据块,您会看到什么?也许当您收到一个包含
\n
的事件时,您可以处理这一排是谁?