Home > front end >  Express.js application error: Cannot read properties of undefined (reading 'transfer-encoding
Express.js application error: Cannot read properties of undefined (reading 'transfer-encoding

Time:04-22

I am working on a blogging app API with express and MongoDB.

I am trying to add a post image for every blog post. Being new to express, I ran into this problem.

And i got this error: Cannot read properties of undefined (reading 'transfer-encoding'

Here is the post controller code code:

const asyncHandler = require("express-async-handler");

const imageModel = require("../models/imageModel");

const User = require("../models/userModel");
const Post = require("../models/postModel");

//  storage
const Storage = multer.diskStorage({
  destination: "storage",
  filename: (res, req, file, cb) => {
    cb(null, Date.now()   file.originalname);
  },
});

const upload = multer({
  storage: Storage,
}).single("img");

// @desc    Create a new post
// @route   POST /api/posts/
// @access  Private
const createPost = asyncHandler(async (res, req) => {
  let img;

  upload(req, res, async function (err) {
    if (err) {
      res.status(400);
      throw new Error("Error uploading images.");
    }
    const newImage = await new imageModel({
      img: {
        data: req.file.filename,
        contentType: "image/png",
      },
    });
    newImage.save().then(console.log("Successfully uploaded"));
    img = newImage;
  });

  console.log(img);

  const { title, description, categories, nacCompatible, downloadURL } =
    req.body;

  if (!title || !description || !categories || !downloadURL) {
    res.status(400);
    throw new Error("Please add all the required fields.");
  }

  // Get user using the id in the JWT
  const user = await User.findById(req.user.id);

  if (!user) {
    res.status(401);
    throw new Error("User not found");
  }

  const post = await Post.create({
    title,
    description,
    img,
    categories,
    nacCompatible,
    downloadURL,
    user: req.user._id,
    status: "new",
  });

  res.status(201).json(post);
});

I also have const multer = require("multer"); at the top of the controller.

The create post function worked fine until I tried to add this upload image feature.

CodePudding user response:

This line: "createPost = asyncHandler(async (res, req)"

You put the req and res in the wrong order

  • Related