product listing

This commit is contained in:
Prabhjot 2025-05-02 12:33:51 +05:30
parent 328751e91c
commit c9414abe43
2 changed files with 58 additions and 15 deletions

View file

@ -1,15 +1,36 @@
// const express = require('express');
// const router = express.Router();
// const Product = require('../models/Product');
// const auth = require('../middleware/auth');
// // GET /api/products - Returns all products (JWT protected)
// router.get('/', auth, async (req, res) => {
// try {
// const products = await Product.find();
// res.json(products);
// } catch (err) {
// res.status(500).json({ error: 'Failed to fetch products' });
// }
// });
// module.exports = router;
const express = require('express');
const router = express.Router();
const Product = require('../models/Product');
const auth = require('../middleware/auth');
const authenticateToken = require('../middleware/auth'); // adjust path if needed
// GET /api/products - Returns all products (JWT protected)
router.get('/', auth, async (req, res) => {
// GET /api/products?category=Electronics
router.get('/', authenticateToken, async (req, res) => {
try {
const products = await Product.find();
const category = req.query.category;
const filter = category ? { category } : {};
const products = await Product.find(filter);
res.json(products);
} catch (err) {
res.status(500).json({ error: 'Failed to fetch products' });
res.status(500).json({ error: 'Server error' });
}
});

View file

@ -1,19 +1,41 @@
require('dotenv').config();
const mongoose = require('mongoose');
const Product = require('../models/Product');
require("dotenv").config();
const mongoose = require("mongoose");
const Product = require("../models/Product");
const seedProducts = [
{ name: 'iPhone 14', category: 'Electronics', price: 999 },
{ name: 'Nike Air Max', category: 'Footwear', price: 120 },
{ name: 'Sony Headphones', category: 'Electronics', price: 199 }
// { name: 'iPhone 14', category: 'Electronics', price: 999 },
// { name: 'Nike Air Max', category: 'Footwear', price: 120 },
// { name: 'Sony Headphones', category: 'Electronics', price: 199 }
{ name: "iPhone 14", category: "Electronics", price: 999 },
{ name: "Nike Air Max", category: "Footwear", price: 120 },
{ name: "Sony Headphones", category: "Electronics", price: 199 },
{ name: "Samsung Galaxy S23", category: "Electronics", price: 899 },
{ name: "Dell XPS 13", category: "Computers", price: 1299 },
{ name: "Apple Watch Series 8", category: "Wearables", price: 399 },
{ name: "Logitech MX Master 3", category: "Accessories", price: 99 },
{ name: "Kindle Paperwhite", category: "Electronics", price: 139 },
{ name: "Canon EOS M50", category: "Electronics", price: 649 },
{ name: "Bose QuietComfort 45", category: "Electronics", price: 329 },
{ name: "Asus ROG Strix G16", category: "Computers", price: 1599 },
{ name: "Google Pixel 8", category: "Electronics", price: 799 },
{ name: "Anker PowerCore 20000", category: "Accessories", price: 59 },
{ name: "Samsung Galaxy Watch 6", category: "Wearables", price: 349 },
{ name: "Razer BlackWidow V3", category: "Accessories", price: 139 },
{ name: "HP Spectre x360", category: "Computers", price: 1399 },
{ name: "Meta Quest 3", category: "Wearables", price: 499 },
{ name: "Beats Studio Pro", category: "Electronics", price: 349 }
];
mongoose.connect(process.env.MONGODB_URI)
mongoose
.connect(process.env.MONGODB_URI)
.then(async () => {
console.log('MongoDB connected');
console.log("MongoDB connected");
await Product.deleteMany(); // Optional: clears old data
await Product.insertMany(seedProducts);
console.log('Sample products inserted');
console.log("Sample products inserted");
process.exit();
})
.catch(err => console.log(err));
.catch((err) => console.log(err));