Reputation: 17332
This is just a part of my express server. I would like to split the code to different files.
import express from 'express'
const app = express()
app.get('/import', async (req, res) => {
var fs = require('fs')
fs.createReadStream('./src/data.csv')
.pipe(parse({
delimiter: ',',
skip_lines_with_error: true
}))
.on('error', function (err) { console.log(err) })
.on('data', async function (row) {
// do a lot of stuff here
})
res.status(200)
})
In this case the import should be imported from another file, but I don't know how to do that.
helper/import.js
export const import = (req, res) => {
var fs = require('fs')
fs.createReadStream('./src/data.csv')
.pipe(parse({
delimiter: ',',
skip_lines_with_error: true
}))
.on('error', function (err) { console.log(err) })
.on('data', async function (row) {
// do a lot of stuff here
})
res.status(200)
}
server.js
import express from 'express'
const app = express()
app.get('/import') // <-- ??
How do I get the async function here?
Upvotes: 1
Views: 1349
Reputation: 477
You don't have to use router in order to do this, here is a simpler version, hope it helps.
import.js
const import = (req, res) => {
//...
};
module.exports = {import};
server.js
const {import} = require('./import.js');
app.get('/import', import);
Upvotes: 0
Reputation: 8597
So you basically want to put routes in a different file.
I tend to create a folder with all my 'routes' in.
Let's use import.js as an example.. here's what the file would look like:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
var fs = require('fs')
fs.createReadStream('./src/data.csv')
.pipe(parse({
delimiter: ',',
skip_lines_with_error: true
}))
.on('error', function (err) { console.log(err) })
.on('data', async function (row) {
// do a lot of stuff here
})
res.status(200)
});
module.exports = router;
Your server.js would then implement that...
const importRouter = require("./helper/import.js");
app.use('/import', importRouter);
Upvotes: 1