Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

262
Visualizações
Subir una imagen a una API con multer

Estoy tratando de crear una aplicación que requiera la carga y el almacenamiento de imágenes, estoy usando Express, Mongoose y Multer e intento cargar en MongoDB.

Actualmente, cuando trato de cargar una imagen, Multer crea una carpeta y almacena la imagen en esa carpeta, pero no guarda el elemento en la base de datos y bloquea el servidor dando el error: ObjectParameterError: Parameter "obj" to Document() must be an object, got itemImages\034ed9d34a3b034becdb415d67b7d193 .

Agregar a la base de datos funciona bien sin intentar agregar la imagen con multer.

Mi código:

elemento_controlador.js:

 const Item = require('../models/item_schema'); const addItem = (req, res) => { let itemData = req.body let itemImage = req.file.path Item.create(itemData, itemImage) .then((data) => { if (data) { res.status(201).json(data) } }) } module.exports = { addItem }

item_schema.js

 const { Schema, model} = require('mongoose') const itemSchema = new Schema({ title: { type: String, required: [true, 'Title field is required.'] }, description: { type: String, required: [true, 'Description field is required.'] }, itemImage: { type: String, required: [true, 'Image field is required.'] }, userID: { type: Schema.Types.ObjectId, ref: "User", required: [true, 'User field is required'] }, categoryID: { type: Schema.Types.ObjectId, ref: "Category", required: [true, 'Category field is required'] }, qualityID: { type: Schema.Types.ObjectId, ref: "Quality", required: [true, 'Quality field is required'] }, price: { type: Number }, claimed:{ type: Boolean } }, { timestamps: true }) module.exports = model('Item', itemSchema)

servidor.js:

 const express = require('express') const cors = require('cors') const jwt = require('jsonwebtoken') const multer = require('multer'); const upload = multer({dest: 'itemImages/'}); require('dotenv').config() require('./db')() const { addItem } = require('./controllers/item_controller') const { loginRequired } = require('./controllers/user_controller') const app = express() app.use(cors()) app.use(express.json()) app.post('/items', upload.single('itemImage'), loginRequired, addItem) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En su item_controller.js intente esto:

 const addItem = (req, res) => { let itemData = req.body let itemImage = req.file.path Item.create({ title: itemData.title, description: description , itemImage: itemImage , userID: item.userID , categoryID: item.categoryID , qualityID: item.qualityID, //put all data that are required here... }, (err,, data)=> { if (err) return handleError(err) //here you custom handleError of Just res.status(400).json(err); res.status(201).json(data) }) }

Model.create recibe como primer parámetro toda la propiedad que desea guardar en su modelo y segundo parámetro como cierre.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda