gpt4 book ai didi

javascript - 从 fast-csv 获取结果对象

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:14 25 4
gpt4 key购买 nike

假设我的文件名为 orders.js像这样的东西:

exports.getOrders = function() {
return {'a': 'b'};
}

和另一个名为 report.js 的文件像这样:

var Order = require('./src/orders');

console.log(Order.getOrders());

这将打印 {'a' : 'b'}我很高兴。现在我想让事情变得更复杂,因为我需要从CSV读取数据(使用fast-csv Node 包),所以我修改了orders.js :

var csv = require('fast-csv');

exports.getOrders = function(clientId) {

var orders = [];

csv
.fromPath("./data/orders.csv", {headers: true, delimiter:';'})
.on("data", function(data) {
orders.push({'price' : data.price});
}
})
.on("end", function(){
console.log(orders) // THIS WILL PRINT THE CORRECT ARRAY
return orders;
});

console.log(orders); // THIS WILL PRINT AN EMPTY ARRAY
return orders;
}

Order.getOrders()时如何返回正确的数组在 report.js 中调用?

最佳答案

有很多异步函数,您可以使用,但为此我使用了 waterfall 方法

你可以这样做

1.report.js

var Order = require('./src/orders');
var c = 0;

Order.getOrders(c, function(err, d ) {
console.log('err', err, 'd', d);
// do what you want to do with response 'd'
// this will print an array of results
// argument c is value for clientId parameter, use your
// value or data
});

2.订单.js

var csv = require('fast-csv');
var async = require('async')
exports.getOrders = function (clientId, cb) {

async.waterfall([
function (callback) {
var orders = [];
csv.fromPath("./data/orders.csv", { headers: true, delimiter: ';' })
.on("data", function (data) {
orders.push({ 'price': data.price });
})
.on("end", function () {
return callback(null, orders)
});

}
], function(err, d) {
if(err) return cb(err);
cb(null, d)
})
}

关于javascript - 从 fast-csv 获取结果对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41638953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com