首页 > 解决方案 > 如何将查询数据添加到数组

问题描述

我正在尝试使用对 REST 端点的查询来遍历数据,然后将其添加到数组中并将其写入 csvtempArray是空的end

var fastcsv = require('fast-csv');  
var tempArray=[];
conn.login(logincred, loginpass, function(err, res) {
    fastcsv.fromPath("accounts.csv").on("data", function(csvrow){
        conn.query("SELECT Id, Name, PersonEmail FROM Account WHERE PersonEmail = '" + csvrow[2] + "' LIMIT 1" , function(err, res) {
            if (err){ 
                console.log(err);
            }
            csvrow[3] = res.records[0].Id
            tempArray.push(csvrow);
            console.log(tempArray)
        });
    }).on('end',function() {
        console.log('CSV file successfully processed');
        console.log(tempArray)
        //want to write csv here
    });
});

标签: javascriptnode.js

解决方案


我把它整理出来,尼尔森是正确的,这基本上是一个比赛条件。我把'end'放在 conn.query() 循环中效果更好。

    fastcsv.fromPath("accounts.csv").on("data", function(csvrow){
        conn.query("SELECT Id, Name, PersonEmail FROM Account WHERE PersonEmail = '" + csvrow[2] + "' LIMIT 1" , function(err, res) {
            if (err) {
                console.log(err);
            }
            csvrow[3] = res.records[0].Id
            tempArray.push(csvrow);
            fastcsv.writeToPath("new.csv", tempArray, {headers: true})
            .on("finish", function() {
                console.log("Added : " + csvrow[2]);
            });
        });
    })

推荐阅读