Я хочу преобразовать результат из агрегата в CSV. В приведенном ниже коде (или псевдокоде) результаты агрегата сохраняются в переменной курсор
Я хочу вернуть CSV в качестве ответа (res.send(csv)
) , Должен ли я использовать res.set('Content-Type', 'content-type: text/csv')
?
Код ниже представляет собой смесь NodeJs и псевдокода. Функция covert_to_csv
указывает на мое незнание предмета.
const express = require('express')
const app = express();
app.get('/', (req, res) => {
let agg=[ /* a query in MongoDB */]
MongoClient.connect(URL,(err, client) => {
res.set('Content-Type', 'content-type: text/csv');
let collection = client.db('db').collection('col')
let cursor = collection.aggregate(agg)
let csv_file = covert_to_csv(cursor)
csv_file.toArray((error, result) => {
res.send(result);
});
});
app.listen(port, () => console.log(`listening on port ${port}!`));
Редактировать:
В моем исходном коде я получаю ответ в json. Я запускаю следующий код:
let agg=[ /* a query in MongoDB */]
let cursor = collection.aggregate(agg)
cursor.toArray((error, result) => {
if(error) {
return res.status(500).send(error);
res.send(result);
Я получаю этот ответ от Почтальона в JSON:
[
{
"Source": "entso-e",
"Dataset": "ActualTotalLoad",
"AreaName": "Germany",
"AreaTypeCode": "CTY",
"MapCode": "DE",
"ResolutionCode": "PT15M",
"Year": "2018",
"Month": "1",
"Day": "2",
"DateTimeUTC": "2018-01-02 00:00:00.0000000",
"ActualTotalLoadValue": "41412.38",
"UpdateTimeUTC": "2018-01-02 13:16:19.0000000"
},
{
"Source": "entso-e",
"Dataset": "ActualTotalLoad",
"AreaName": "Germany",
"AreaTypeCode": "CTY",
"MapCode": "DE",
"ResolutionCode": "PT15M",
"Year": "2018",
"Month": "1",
"Day": "2",
"DateTimeUTC": "2018-01-02 00:45:00.0000000",
"ActualTotalLoadValue": "40785.17",
"UpdateTimeUTC": "2018-01-02 13:16:19.0000000"
},
..... (more documents)
]