Building a MERN stack app, I am not able to retrieve data from the database using the userid, but if I don't specify this {userid: req.body.userid} parameter of await Transaction.find({ }) in the transactionsRoute.js, I am able to retrieve the data from the database, but it displays all the data which is present in the database irrespective of the users, what could be a possible fix for this?
transactionsRoute.js
--->> There is no error message, but it is also not displaying any data from the database
const Transaction = require("../models/Transaction");
const router = express.Router();
router.post("/add-transaction", async function (req, res) {
try {
const newTransaction = new Transaction(req.body);
await newTransaction.save();
res.send("Transaction Added Successfully");
} catch (error) {
res.status(500).json(error);
}
});
router.get("/get-all-transactions", async (req, res) => {
try {
const transactions = await Transaction.find({userid: req.body.userid});
res.send(transactions);
} catch (error) {
console.log(error)
res.status(500).json(error);
}
});
module.exports = router;
transactionsRoute.js
--->> There is no error message, but it is displaying all data from the database if I leave the parameter of await Transaction.find({ }); empty
const Transaction = require("../models/Transaction");
const router = express.Router();
router.post("/add-transaction", async function (req, res) {
try {
const newTransaction = new Transaction(req.body);
await newTransaction.save();
res.send("Transaction Added Successfully");
} catch (error) {
res.status(500).json(error);
}
});
router.get("/get-all-transactions", async (req, res) => {
try {
const transactions = await Transaction.find({ });
res.send(transactions);
} catch (error) {
console.log(error)
res.status(500).json(error);
}
});
module.exports = router;
Home.js
--->> This is my main home page which displays the table
import axios from "axios";
import React, { useEffect, useState } from "react";
import AddEditTransaction from "../components/AddEditTransaction";
import DefaultLayout from "../components/DefaultLayout";
import Spinner from "../components/Spinner";
import "../resources/transactions.css";
function Home() {
const [
showAddEditTransactionModel,
SetshowAddEditTransactionModel,
] = useState(false);
const [loading, setLoading] = useState(false);
const [transactionsData, setTransactionData] = useState([]);
const getTransaction = async () => {
try {
const user = JSON.parse(localStorage.getItem("moneymanager"));
setLoading(true);
const response = await axios.get(
"/api/transactions/get-all-transactions",
{ userid: user._id }
);
console.log(response.data)
setTransactionData(response.data);
setLoading(false);
} catch (error) {
setLoading(false);
message.error("Something Went Wrong");
}
};
useEffect(() => {
getTransaction();
}, []);
const columns = [
{
title: "Date",
dataIndex: "date"
},
{
title: "Amount",
dataIndex: "amount"
},
{
title: "Category",
dataIndex: "category"
},
{
title: "Reference",
dataIndex: "reference"
},
{
title: "Description",
dataIndex: "description"
}
]
return (
<DefaultLayout>
{loading && <Spinner />}
<div className="filter d-flex justify-content-between align-items-center">
<div></div>
<div>
<button
className="primary"
onClick={() => SetshowAddEditTransactionModel(true)}
>
ADD NEW
</button>
</div>
</div>
<div className="tabel-analytics">
<div className="table">
<Table columns={columns} dataSource={transactionsData} />
</div>
</div>
{showAddEditTransactionModel && (
<AddEditTransaction
showAddEditTransactionModel={showAddEditTransactionModel}
SetshowAddEditTransactionModel={SetshowAddEditTransactionModel}
/>
)}
</DefaultLayout>
);
}
export default Home;
``