es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede agregar nuevo producto a mongodb, se ha presentado un error POST 500.

Tengo problemas para agregar un nuevo producto a MongoDB. He realizado el registro y funciona bien, al igual que el inicio de sesión. Pero al agregar un producto, recibí este mensaje:

POST http://localhost:5000/api/product/newProduct 500 (Error interno del servidor)

Revisé mi punto final y creo que está bien.

dashboard.jsx

import axios from ‘axios’
import React, { useEffect, useState } from ‘react’
import { useNavigate } from ‘react-router’

function Dashboard() {
const [name, setName] = useState(“”)
const [categories, setCat] = useState(“”)
const [error, seterror] = useState(false)
const [data, setData] = useState({})
const navigate = useNavigate()
const [price, setprice] = useState(0)

const handleCat = (e) => {
setCat(e.target.value.split(‘,’))
}

const handleSubmit = async (e) => {
e.preventDefault()
console.log(categories,name,price)
seterror(false)
try {
const prod = await axios.post(‘http://localhost:5000/api/product/newProduct’, {
name,
categories,
price
})
prod.data && navigate(‘/dashboard’)
} catch (error) {
seterror(true)
}
}

useEffect(() =>{
const getProduct = async () =>{
try {
const res = await axios.get(‘http://localhost:5000/api/product’)
setData(res.data)
} catch (error) {

  }
}
getProduct()

},[])

//console.log(data)

return (

handleSubmit(e)}>


setName(e.target.value)}
/>


setprice(e.target.value)}
/>

)
}

export default Dashboard

index.js

const express = require(‘express’)
const mongoose = require(‘mongoose’)
const app = express()
const cors = require(‘cors’)
const dotenv = require(‘dotenv’)
const userRoute = require(‘./routes/auth’)
const productRoute = require(‘./routes/product’)

dotenv.config()

app.use(cors())
app.use(express.json())

mongoose
.connect(process.env.MONGO_DB)
.then(() => {
console.log(‘Conectado al servidor’)
})
.catch((err) => console.log(err))

app.use(‘/api/auth’, userRoute)
app.use(‘/api/product’, productRoute)

app.listen(5000, () => {
console.log(‘Local Host está ejecutándose en el puerto 5000’)
})

productRoute.js

const router = require(‘express’).Router()
const Product = require(‘../models/Product’)

router.post(‘/newProduct’, async (req, res) => {
const newProduct = new Product(req.body)

try {
const savedProduct = await newProduct.save()
res.status(200).json(savedProduct)
} catch (error) {
res.status(500).json(error)
}
})

router.get(‘/’, async (req, res) => {
try {
const products = await Product.find()
res.status(200).json(products)
} catch (error) {
res.status(500).json(error)
}
})

module.exports = router

schema

const mongoose = require(‘mongoose’)
const ProductSchema = new mongoose.Schema(
{
name: { type: String, required: true, unique: true },
price: { type: Number, required: true },
categories: { type: Array },
img: { type: String },
},
{ timestamps: true }
)

module.exports = mongoose.model(‘Product’, ProductSchema)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con los datos que se envían desde el frontend al backend.

    Aquí hay algunas cosas para verificar y solucionar el problema:

    1. Verifique si el modelo Product coincide con el esquema de la base de datos. Asegúrese de que todos los campos requeridos estén presentes y coincidan con los tipos.
    2. Verifique la carga útil de solicitud que se envía al backend. Puede hacer esto agregando una declaración de console.log(req.body) en el archivo productRoute.js, dentro de la función router.post('/newProduct', async (req, res) => { ... }). Asegúrese de que los datos se estén enviando en el formato correcto y coincidan con el esquema.

    3. Verifique si hay errores de sintaxis o errores tipográficos en el código, especialmente en la función handleSubmit en dashboard.jsx.

    4. Use una herramienta como Postman para enviar una solicitud de prueba al backend y ver si recibe la respuesta esperada. Esto puede ayudar a confirmar si el problema está en el código del frontend o en el código del backend.

    Si ninguna de estas soluciones corrige el problema, puede ser útil proporcionar más contexto, como todo el mensaje de error que se está recibiendo.

Comments are closed.