以 CSV 格式从 Mongo DB 数据库中导出数据
Export the data from a Mongo DB database in a CSV
我在 Node JS 中有一个项目,我想通过视图中的按钮 (index.ejs
) 将 Mongo DB
中数据库中包含的数据导出到 CSV 文件中。
我正在使用 mongoose
连接到数据库并将数据导出到 CSV 我正在尝试使用 json-2-csv
.
在按钮中我添加了一个 url 以便能够通过按钮调用 url 并且 json-2-csv 函数响应 url 但我不知道该怎么做,或者这是否是最好的方法。
这是我的 app.js
:
const fs = require('fs');
const json2csv = require("json2csv").Parser;
const userModel = require('./models/users');
const express = require("express");
const app = express();
app.get('/export/csv', async (req, res) => {
await userModel.find((err, data) => {
if (err) throw err;
const json2csvParser = new json2csv({ header: true });
const csvData = json2csvParser.parse(data);
fs.writeFile("users.csv", csvData, function(error) {
if (error) throw error;
console.log("Write to bezkoder_mongodb_fs.csv successfully!");
});
});
});
这是button
:
<form action="/export/csv" mehotd="GET">
<button id="export-csv">Export CSV</button>
</form>
您可以在单个文件 app.js
文件中实现所有这些事情。我们需要有 json2csv
模块,因为这个 module
有 parser
class 这样我们就可以使用 parse()
方法来获取 CSV
格式的数据作为 String
。这里 lean
选项告诉 mongoose 跳过实例化一个完整的 Mongoose document
,只给你 Plain Old JavaScript Object
POJO
。而且我还使用 username
和 password
作为 documents
所以相应地改变它。
const path = require('path');
const ejs = require('ejs');
const fs = require('fs');
const express = require('express');
//You need to have some documents into your DB first
const Collection = require('your/Modal Path');
const Json2csvParser = require("json2csv").Parser;
const app = express();
const port = process.env.PORT || 3000;
//Templating Engine Ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
//Middleware
app.use(express.urlencoded({
extended: true
}));
app.use(express.json());
//MONGO DB CONNECTION
const url = 'mongodb://localhost:27017/users';
mongoose.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log('Successfully Established Connection with MongoDB')
}).catch(err => {
console.log('Failed to Establish Connection with MongoDB with Error: ' + err);
process.exit();
});
app.get('/export/csv', async (req, res) => {
await Collection.find({}).lean().exec((err, data) => {
if (err) throw err;
const csvFields = ['_id', 'username', 'password']
console.log(csvFields);
const json2csvParser = new Json2csvParser({
csvFields
});
const csvData = json2csvParser.parse(data);
fs.writeFile("bezkoder_mongodb_fs.csv", csvData, function(error) {
if (error) throw error;
console.log("Write to bezkoder_mongodb_fs.csv successfully!");
});
res.send('File downloaded Successfully')
});
});
//HOME route
app.get('/', (req, res) => {
res.render('home.ejs');
});
//listening to the PORT Number
app.listen(port, console.log(`Server is running at ${port}`));
所以,这就是您的 app.js
文件的样子。并在 views directory
内创建一个 home.ejs
文件,如 views/home.ejs
。并添加以下代码:
<form action="/export/csv" mehotd="GET">
<button id="export-csv">Export CSV</button>
</form>
我在 Node JS 中有一个项目,我想通过视图中的按钮 (index.ejs
) 将 Mongo DB
中数据库中包含的数据导出到 CSV 文件中。
我正在使用 mongoose
连接到数据库并将数据导出到 CSV 我正在尝试使用 json-2-csv
.
在按钮中我添加了一个 url 以便能够通过按钮调用 url 并且 json-2-csv 函数响应 url 但我不知道该怎么做,或者这是否是最好的方法。
这是我的 app.js
:
const fs = require('fs');
const json2csv = require("json2csv").Parser;
const userModel = require('./models/users');
const express = require("express");
const app = express();
app.get('/export/csv', async (req, res) => {
await userModel.find((err, data) => {
if (err) throw err;
const json2csvParser = new json2csv({ header: true });
const csvData = json2csvParser.parse(data);
fs.writeFile("users.csv", csvData, function(error) {
if (error) throw error;
console.log("Write to bezkoder_mongodb_fs.csv successfully!");
});
});
});
这是button
:
<form action="/export/csv" mehotd="GET">
<button id="export-csv">Export CSV</button>
</form>
您可以在单个文件 app.js
文件中实现所有这些事情。我们需要有 json2csv
模块,因为这个 module
有 parser
class 这样我们就可以使用 parse()
方法来获取 CSV
格式的数据作为 String
。这里 lean
选项告诉 mongoose 跳过实例化一个完整的 Mongoose document
,只给你 Plain Old JavaScript Object
POJO
。而且我还使用 username
和 password
作为 documents
所以相应地改变它。
const path = require('path');
const ejs = require('ejs');
const fs = require('fs');
const express = require('express');
//You need to have some documents into your DB first
const Collection = require('your/Modal Path');
const Json2csvParser = require("json2csv").Parser;
const app = express();
const port = process.env.PORT || 3000;
//Templating Engine Ejs
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
//Middleware
app.use(express.urlencoded({
extended: true
}));
app.use(express.json());
//MONGO DB CONNECTION
const url = 'mongodb://localhost:27017/users';
mongoose.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log('Successfully Established Connection with MongoDB')
}).catch(err => {
console.log('Failed to Establish Connection with MongoDB with Error: ' + err);
process.exit();
});
app.get('/export/csv', async (req, res) => {
await Collection.find({}).lean().exec((err, data) => {
if (err) throw err;
const csvFields = ['_id', 'username', 'password']
console.log(csvFields);
const json2csvParser = new Json2csvParser({
csvFields
});
const csvData = json2csvParser.parse(data);
fs.writeFile("bezkoder_mongodb_fs.csv", csvData, function(error) {
if (error) throw error;
console.log("Write to bezkoder_mongodb_fs.csv successfully!");
});
res.send('File downloaded Successfully')
});
});
//HOME route
app.get('/', (req, res) => {
res.render('home.ejs');
});
//listening to the PORT Number
app.listen(port, console.log(`Server is running at ${port}`));
所以,这就是您的 app.js
文件的样子。并在 views directory
内创建一个 home.ejs
文件,如 views/home.ejs
。并添加以下代码:
<form action="/export/csv" mehotd="GET">
<button id="export-csv">Export CSV</button>
</form>