Hi guys dựa trên @VierTD trả lời bạn phải sử dụng json2csv để xây dựng dữ liệu csv từ dữ liệu MongoDB
Update Package.json với dependecies
"dependencies": {
"mongodb": "^2.2.10",
"json2csv": "*",
"express": "*"
}
Tạo đối tượng json2CSV, hãy nhớ điều này được lập bản đồ tài liệu (bảng db) của bạn để tên trên "cánh đồng" phải phù hợp với db bảng, fieldnames là tùy thuộc vào bạn nhưng cũng rất quan trọng vì đây là những CSV tên cột tập tin
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 });
dữ liệu csv Gửi cho khách hàng
res.attachment('filename.csv');
res.status(200).send(data);
This code cho thấy làm thế nào để xuất file csv dựa trên tài liệu db Mongo (dữ liệu bảng cơ sở)
Tôi đã tạo mẫu github repo thực sự lấy mẫu ngắn gọn ý tưởng, cũng tạo cơ sở dữ liệu với dữ liệu giả tại Mongo Lab Website để mã này chạy ngay lập tức trong máy tính của bạn.Based trên @VietTD answer!
Trong trường hợp bạn đang quan tâm về kiểm tra mã này chỉ cần nhớ để thay đổi dòng sau
Thay đổi url db (Thành viên của riêng bạn db làm việc này nhưng nó chỉ dành cho mục đích thể hiện; D)
var url = 'mongodb://admin:[email protected]:63946/misale_dev';
Thay đổi tài liệu mục tiêu (hoặc db bảng)
var collection = db.collection('_dummy');
cột Thay đổi tài liệu (hoặc các lĩnh vực cột db của bảng)
012.351.
var fields = ['_id', 'JobID', 'LastApplied'];
Cuối cùng đặt bạn CSV tên cột tiêu đề cũng như tên tập tin CSV
var fieldNames = ['ID_OR_PK', 'JOB_UNIQUE_ID_TITLE', 'APPLICATION_DATE'];
Cuối cùng nhưng không kém phần quan
res.attachment('yourfilenamehere.csv');
Xin vui lòng để cải thiện mẫu mã tôi sẽ đánh giá cao điều đó ! hoặc chỉ cần tải xuống và xem mã, nó đã đi kèm với cơ sở dữ liệu để dễ hiểu và chạy, trong trường hợp bạn không quan tâm ở đây là toàn bộ mã có thể bạn thấy điều thú vị:
//
// EXPRESS JS SERVER INITI
//
var express = require('express')
var app = express()
//
// MONGO DB INIT
//
var MongoClient = require('mongodb').MongoClient, assert = require('assert');
app.get('/', function (req, res) {
var url = 'mongodb://admin:[email protected]:63946/misale_dev';
//
// This function should be used for migrating a db table to a TBD format
//
var migrateMongoDBTable = function(db, callback) {
// Get the documents collection
console.log("Reading database records");
// Get the documents collection
var collection = db.collection('_dummy');
// Find some documents
//collection.find({'a': 3}).toArray(function(err, docs) {
collection.find({}).toArray(function(err, docs) {
assert.equal(err, null);
//console.log(docs);
//console.log('docs.length ---> ', docs.length);
console.log('Creating CSV...');
//console.log('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=');
var json2csv = require('json2csv');
var fields = ['_id', 'JobID', 'LastApplied'];
var fieldNames = ['ID_OR_PK', 'JOB_UNIQUE_ID_TITLE', 'APPLICATION_DATE'];
var data = json2csv({ data: docs, fields: fields, fieldNames: fieldNames });
//console.log('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=');
// EXPORT FILE
res.attachment('yourfilenamehere.csv');
res.status(200).send(data);
callback(docs);
});
};
// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected successfully to server");
//
// migrate db table to some format TBD
//
migrateMongoDBTable(db, function() {
db.close();
});
});
})
app.listen(3000, function() {
console.log('Example app listening on port 3000!')
})
// Connection URL
//var url = 'mongodb://localhost:27017/myproject';
Cảm ơn!
Vâng, nó hoạt động, nhưng làm cách nào để đặt đúng kiểu nội dung ... là giả sử để hiển thị dưới dạng tệp - tệp trong thư mục tải xuống của tôi? hoặc là có một cách thân thiện hơn để gửi nó? Điều này làm việc tốt và mở ra với bất kỳ ứng dụng, nhưng chỉ tự hỏi nếu có một cách tốt hơn để thiết lập loại hoặc làm thế nào để làm cho nó trông đẹp hơn, hoặc đây là cách mọi người làm điều đó nếu bạn đang cố gắng để gửi một tập tin? – Lion789
Bạn có ý nghĩa gì khi "đẹp hơn"? có thể là "text/plain"? Bạn có thể cho tôi biết thêm một chút thông tin về những gì bạn đang cố gắng làm. Chúc mừng. –
Về cơ bản, cố gắng cho phép người dùng tải xuống danh sách liên hệ của họ ngoại tuyến ... – Lion789