I changed my _redirects
file to
/api/* https://courageous-boba.netlify.app/.netlify/functions/api 200
/home /index.html 200
/orderEntry /index.html 200
/changePassword /index.html 200
and reorder few lines in my api.js
inside functions folder.
var express = require('express')
var mysql = require('mysql');
var bodyParser = require('body-parser')
const cors = require('cors')
var Json2csvParser = require('json2csv').Parser;
const fs = require('fs')
const serverless = require('serverless-http')
const app = express()
const router = express.Router()
var con = mysql.createConnection({
host: "db4free.net",
user: "user",
password: "password",
database: "database"
});
con.connect(function (err) {
if (err) throw err;
console.log("Connected!");
});
app.use(cors());
app.use(express.json())
app.use(bodyParser.urlencoded({
extended: true
}));
router.get('/', (req, res) => {
res.json({
hello: "hi!"
});
})
// Route for creating the post
router.post('/api/create', (req, res) => {
// const item = req.body;
const orderDate = req.body.orderDate;
const item = req.body.item;
const count = req.body.count;
const weight = req.body.weight;
const requests = req.body.requests;
const id = req.body.id;
// console.log(item)
// console.log(orderDate,company,owner,item,count,weight,requests)
con.query("INSERT INTO Orderitem (order_date,item,count,weight,requests,user_id) VALUES (?,?,?,?,?,?)", [orderDate, item, count, weight, requests, id], (err, result) => {
if (err) {
console.log(err)
// res.status(500).end()
}
res.send(result)
// res.status(200).end()
}
);
})
router.post('/api/export-csv', function (req, res) {
const { id } = req.body;
con.query("SELECT * FROM Orderitem WHERE user_id = ?", id, function (err, items, fields) {
if (err) throw err;
// console.log("users:");
const jsonItems = JSON.parse(JSON.stringify(items));
// console.log(jsonItems);
// -> Convert JSON to CSV data
const csvFields = ["order_id", "order_date", "item", "count", "weight", "requests", "user_id"];
const json2csvParser = new Json2csvParser({ csvFields });
const csv = json2csvParser.parse(jsonItems);
res.setHeader("Content-Type", "text/csv");
res.setHeader("Content-Disposition", "attachment; filename=orderItems.csv");
fs.writeFileSync('orderItems.csv', csv)
res.status(200).end(csv);
});
});
app.listen(4000, () => {
console.log(`Server is running on 4000`)
})
app.use('/.netlify/functions/api',router)
module.exports = app;
module.exports= router;
module.exports.handler = serverless(app)
Now I am able to fetch data, except for the /api/export-csv
route which is giving a CORS error.