Hi guys podstawie @VierTD odpowiedzieć trzeba użyć json2csv budować danych CSV z danymi MongoDB
pakiet aktualizacji.json z dependecies
"dependencies": {
"mongodb": "^2.2.10",
"json2csv": "*",
"express": "*"
}
Tworzenie obiektu json2CSV, pamiętaj, to jest mapowanie dokument (tabela db), więc nazwy na „polach” musi pasować db tabeli fieldNames są do ciebie, ale są również ważne, ponieważ są to CSV nazwy kolumn plik
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 });
dane Wysłać CSV do klienta
res.attachment('filename.csv');
res.status(200).send(data);
This code pokazuje jak wyeksportować plik csv na podstawie Mongo dokumentu dB (dane tabela podstawowa)
Stworzyłem github repo naprawdę krótką próbkę pomysłu, utworzyłem również bazę danych z danymi fikcyjnymi pod Mongo Lab Website, więc ten kod będzie działać natychmiast w twoim komputerze. Oparty na @VietTD odpowiedź!
W przypadku zainteresowania na testowaniu tego kodu tylko pamiętać, aby zmienić następujące linie
Zmień db URL (User własną db to działa, ale to tylko dla celów pokazujących; D)
var url = 'mongodb://admin:[email protected]:63946/misale_dev';
Zmień dokument docelowy (lub tabeli db)
var collection = db.collection('_dummy');
kolumny Zmiana dokumentu (lub pól kolumn db stołu)
var fields = ['_id', 'JobID', 'LastApplied'];
Wreszcie ustawić Ci nazwami tytuł kolumny CSV, jak również jak nazwa pliku CSV
var fieldNames = ['ID_OR_PK', 'JOB_UNIQUE_ID_TITLE', 'APPLICATION_DATE'];
Ostatni, ale nie najmniej
res.attachment('yourfilenamehere.csv');
Prosimy poprawić kod przykładowy będę docenić, że ! lub po prostu pobierz go i spójrz na kod, już posiada bazę danych, dzięki czemu będzie łatwy do zrozumienia i uruchomienia, w takim przypadku nie obchodzi cię cały kod, może zobaczysz coś interesującego:
//
// 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';
Dzięki!
Tak, to działa, ale jak ustawić typ zawartości poprawnie ... czy powinien pojawić się jako plik - w moim folderze pobierania? lub czy istnieje bardziej przyjazny sposób na wysłanie go? Działa to dobrze i otwiera się z każdą aplikacją, ale zastanawiał się tylko, czy istnieje lepszy sposób na ustawienie typu lub jak sprawić, by wyglądała ładniej, czy jest to sposób, w jaki ludzie to robią, jeśli próbujesz wysłać plik? – Lion789
Co masz na myśli mówiąc "ładniej"? może "tekst/zwykły"? Czy możesz dać mi trochę więcej informacji o tym, co próbujesz zrobić. Twoje zdrowie. –
Zasadniczo próbuję umożliwić użytkownikom pobranie ich listy kontaktów w trybie offline ... – Lion789