首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从fast-csv获取结果对象

从fast-csv获取结果对象
EN

Stack Overflow用户
提问于 2017-01-14 00:15:00
回答 1查看 2.2K关注 0票数 1

假设我的文件名为orders.js,如下所示:

代码语言:javascript
复制
exports.getOrders = function() {
    return {'a': 'b'};
}

另一个文件名为report.js,如下所示:

代码语言:javascript
复制
var Order = require('./src/orders');

console.log(Order.getOrders());

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

代码语言:javascript
复制
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;
}

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

EN

回答 1

Stack Overflow用户

发布于 2017-01-14 00:40:39

有很多异步函数,你可以使用,但我使用的是瀑布方法

你可以这样做

1.report.js

代码语言:javascript
复制
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
});

  1. order.js

代码语言:javascript
复制
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)
 })
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41638953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档