【问题标题】:I'm trying to upload an image on mongodb using POSTMAN the error says,"Cannot read property 'buffer' of undefined"我正在尝试使用 POSTMAN 在 mongodb 上上传图像,错误提示“无法读取未定义的属性‘缓冲区’”
【发布时间】:2021-06-13 08:09:59
【问题描述】:

我正在尝试发布图像和其他 3 个字段以存储在我的 mongoDB 地图集中,以下是我的 ROUTES 文件中的代码

const express = require('express');
const router = express.Router();
const jwt = require('jsonwebtoken');
const keys = require('../config/key');
const passport = require('passport');
const mongoose = require('mongoose');
const { ensureAuth, ensureAdmin } = require('../middleware/auth');
var multer = require('multer');

var storage = multer.memoryStorage();
var upload = multer({ storage: storage });

// @route   POST /novels
// @desc    Create novel
// @access  Private
router.post(
  '/',
  upload.single('image'),

  (req, res) => {
    const newNovel = new Novel({
      title: req.body.title,
      author: req.body.author,
      synopsis: req.body.synopsis,
    });
    newNovel.img.data = req.file.image.buffer;
    newNovel.img.contentType = 'image/jpg';

    console.log('boidy:', req.body);

    newNovel.save().then((novel) => res.json(novel));
  }
);

我在邮递员正文部分​​输入以下内容,图像包含错误并输入字段

以下是我的 SCHEMA

const mongoose = require('mongoose');
const chapter = require('./Chapter');

const NovelSchema = mongoose.Schema({
  title: {
    type: String,
    required: true,
  },
  author: {
    type: String, //mongoose.Schema.Types.ObjectId, // author object,
    required: true,
  },
  synopsis: {
    type: String,
    required: true,
  },
  comments: [
    {
      body: String,
      date: Date,
    },
  ],
  date: {
    type: Date,
    default: Date.now,
  },
  access: {
    // true for public || false for private
    type: Boolean,
    default: false,
  },
  noOfChapters: {
    type: Number,
  },
  ***img: { data: Buffer, contentType: String }***,
  Chapters: [
    {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Chapter',
    },
  ],
  genre: [String],
  meta: {
    views: {
      type: Number,
    },
    likes: {
      type: Number,
    },
  },
});

module.exports = Novel = mongoose.model('Novel', NovelSchema);

目前我只在我的数据库中添加 TITLE、AUTHOR 和 SYNOPSIS,之前我在没有图像的情况下尝试过,效果很好

【问题讨论】:

    标签: node.js mongodb express mongoose postman


    【解决方案1】:

    请使用console.log(req.file.image) 来检查值。如果我没记错的话,应该是req.image.buffer(没有.image)。

    newNovel.img.data = req.file.buffer;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2021-07-30
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2019-11-14
      相关资源
      最近更新 更多