Vi esta gran introducción y la implementé de manera similar, pero la implementé bien en el servidor local (servidor de desarrollo), pero el servidor Amazon ec2 que usa cloudfront genera un error 502.
Después de verificar la consola, parece que los datos largos con búfer no se almacenan en la base de datos. No sé por qué funciona en el servidor local pero no en ec2. ¿Es la nube el problema? ¿Cómo puedo encontrar una solución?
const express = require('express'); const router = express.Router(); const Post = require('../models/Post'); const multer = require('multer'); const fs = require('fs'); var path = require('path'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/'); }, filename: function (req, file, cb) { cb(null, file.originalname); }, }); const upload = multer({ storage }); // blog post creation router.post('/', upload.single('image'), (req, res) => { const { title, description, category, md } = req.body; const requestPost = { title, description, category, content: md, image: { data: fs.readFileSync( path.join(__dirname, '..', 'uploads/' + req.file.filename) ), contentType: 'image/png', }, }; // the below codes doesn't work. console.log() in this code didn't work const post = new Post(requestPost); post.save((err, post) => { if (err) return res.status(400).json({ trial: false, err }); res.status(200).json({ trial: true, post }); }); }); Creo que el tamaño de ArrayBuffer en la imagen es demasiado grande para que Cloudfront se comunique con MongoDB Atlas.
Si mi conjetura es correcta, me pregunto cómo interfiere cloudfront con esto cuando la base de datos y ec2 se comunican directamente.
Por favor, hágamelo saber si no entiende esta pregunta. Estoy frustrado porque no puedo averiguar cuál es el problema. Que tengas un lindo día....!