Lio*_*789 21 mongoose mongodb node.js
嘿我正在尝试从node.js导出csv(从mongodb中提取数据).我已经将数据拉动并用逗号分隔所有,但现在我想弄清楚如何实际发送它......我将这段代码粘贴在我的路径文件中.有关如何获取数据并将其发送给用户直接下载的任何建议.
这里是代码:(我尝试了代码底部的第二个功能)
exports.downloadContacts = function(req, res) {
async.waterfall([
function(callback) {
var source = [];
Friend.find({userId: req.signedCookies.userid}, function(err, friends) {
if(err) {console.log('err with friends for download');
} else {
var userMap = {};
var friendIds = friends.map(function (user) {
userMap[user.friend_id] = user;
return user.friend_id;
});
console.log(friends);
User.find({_id: {$in: friendIds}}, function(err, users) {
if(err) {console.log(err);
} else {
for(var i = 0; i < users.length; i++) {
console.log('users')
//console.log(users[i]);
source.push(users[i].firstNameTrue, users[i].lastNameTrue, users[i].emailTrue, users[i].phone, users[i].emailList, users[i].phoneList)
}
console.log(source);
callback(null, source);
}
});
}
});
}
],
function(err, source) {
var result = [];
res.contentType('csv');
csv()
.from(source)
.on('data', function(data){
result.push(data.join());
})
.on('end', function(){
res.send(result.join('\n'));
});
});
};
Run Code Online (Sandbox Code Playgroud)
Jon*_*iaz 23
您是否尝试过类似"内容类型为"application/octet-stream"的内容
res.set('Content-Type', 'application/octet-stream');
res.send(<your data>);
Run Code Online (Sandbox Code Playgroud)
或者干脆
res.send(Buffer.from(<your data>));
Run Code Online (Sandbox Code Playgroud)
Vie*_*ran 23
这是我做的:
var json2csv = require('json2csv');
var fields = ['name', 'phone', 'mobile', 'email', 'address', 'notes'];
var fieldNames = ['Name', 'Phone', 'Mobile', 'Email', 'Address', 'Notes'];
var data = json2csv({ data: docs, fields: fields, fieldNames: fieldNames });
Run Code Online (Sandbox Code Playgroud)
res.attachment('filename.csv');
res.status(200).send(data);
Run Code Online (Sandbox Code Playgroud)
该json2csv软件包已被更新以来的最高投票的答案是书面的,较新的版本稍有不同的语法:
var { Parser } = require('json2csv')
const fields = [{
label: 'header 1',
value: 'field1_name'
}, {
label: 'header 2',
value: 'field2_name'
}]
const json2csv = new Parser({ fields: fields })
try {
const csv = json2csv.parse(data)
res.attachment('data.csv')
res.status(200).send(csv)
} catch (error) {
console.log('error:', error.message)
res.status(500).send(error.message)
}
Run Code Online (Sandbox Code Playgroud)
res.attachment 是一个函数而不是一个属性。需要删除等号才能工作。
归档时间: |
|
查看次数: |
48483 次 |
最近记录: |