This is my demo_db.js.
const { json } = require("express");
const mysql = require("mysql");
const con = mysql.createConnection({
host: "127.0.0.1",
user: "root",
password: "ank@123",
database: "usersdb",
port: 3306,
multipleStatements: true,
});
con.connect((err) => {
if (err) {
console.error("Error connecting to the database:", err);
return;
}
console.log("Connected");
});
const insertData = (id, name, callback) => {
const userData = [[id, name]];
con.query(
"INSERT INTO users (id, name) VALUES ?",
[userData],
function (err, result) {
if (err) {
console.error("Error inserting data:", err);
callback(err, null);
} else {
console.log("Number of records inserted: " + result.affectedRows);
callback(null, { id, name });
}
}
);
};
const getData = (callback) => {
con.query("SELECT * FROM users", function (err, result) {
if (err) {
console.error("Error retrieving data:", err);
callback(err, null);
} else {
console.log(result);
const jsonData = JSON.stringify(result);
callback(null, jsonData);
}
});
};
module.exports = { getData, insertData };
This is my app.js. It has 2 api's one is get data from DB, another is to add data to DB.
const express = require("express");
const app = express();
const fs = require("fs");
const { people } = require("./data2");
const insertData = require("./demo_db");
const getData = require("./demo_db");
// const people = require("./routes/people");
// const auth = require("./routes/auth");
// //static assets
app.use(express.static("./methods-public"));
// //parse form data
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
// app.use("/api/people", people);
// app.use("/login", auth);
app.get("/api/people", (req, res) => {
getData((err, result) => {
if (err) {
return res.status(500).json({ error: err });
}
res.json({ data: result });
});
});
app.post("/api/people/add", (req, res) => {
const { id, name } = req.body;
insertData(id, name, (err, insertedData) => {
if (err) {
return res.status(500).json({ error: "Failed to insert data" });
}
res.json({ message: "Data inserted successfully", data: insertedData });
});
});
app.listen(5000, () => {
console.log("Server is listening on port 5000....");
});
Both methods are working fine individually.
If I only have one method in demo_db.js then it is working fine,
If i try to export 2 modules its showing error.
Error is:
TypeError: getData is not a function
at C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\app.js:22:3
at Layer.handle [as handle_request] (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\route.js:144:13)
at Route.dispatch (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\route.js:114:3)
at Layer.handle [as handle_request] (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\index.js:284:15
at Function.process_params (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\index.js:346:12)
at next (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\index.js:280:10)
at C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\body-parser\lib\read.js:137:5
at AsyncResource.runInAsyncScope (node:async_hooks:203:9)
Anyone faced this,
How to solve this error