1

我正在执行一个 mongdb 数据库查询,它下载一组对象,然后我想将其转换为 CSV。我使用babyparse的是节点的 papaparse 替代版本。

这就是我正在尝试的:

    Player.find({}).
      exec(function(err, players) {
        console.log(players.length);
        var csv = papaparse.unparse(players, {
          quotes: false,
          delimiter: ',',
          newline: '\n'
        });

        response.set({'Content-Type': 'application/force-download',
                      'Content-disposition':'attachment; filename=players.csv'});


        response.send(200, csv);
      });
  }

但是,这不会提供正确的 CSV 文件,而是提供一些奇怪的东西,例如 csv 内容与 java 脚本函数内容的合并。

我该怎么做?

4

1 回答 1

1

使用以下函数展平 JSON 数据

JSON.flatten = function(data) {
    var result = {};
    function recurse (cur, prop) {
        if (Object(cur) !== cur) {
            result[prop] = cur;
        } else if (Array.isArray(cur)) {
            for(var i=0, l=cur.length; i<l; i++)
                 if(cur[i].constructor === Object)
                 recurse(cur[i], prop + "[" + i + "]");
                 else
                 {

                   if(cur.length > 1)
                    {
                        result[prop] = (result[prop] || "") + cur[i] + ";";
                    }
                    else
                    {
                        result[prop] = cur;
                    }

                 }

            if (l == 0)
                result[prop] = [];
        } else {
            var isEmpty = true;
            for (var p in cur) {
                isEmpty = false;
                recurse(cur[p], prop ? prop+"."+p : p);
            }
            if (isEmpty && prop)
                result[prop] = {};
        }
    }
    recurse(data, "");
    return result;
}

根据您的情况修改:)

于 2015-07-28T09:48:08.547 回答