Невозможно прочитать свойство 'originalname' из неопределенного nodejs mongoose - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь сохранить изображения, используя mongoose, express, multer, но при тестировании с почтальоном всегда выдается следующая ошибка:

TypeError: Cannot read property 'оригинал 'из неопределенного

var express=require("express")
var  router= express.Router();
var app=express()
var artisanModel=require("../models/artisanModel")
var fs = require('fs')
const multer = require('multer');
const upload = multer({dest: __dirname + '/uploads/images'});

router.post('/add', upload.single('image'), function (req, res) {
  console.log(req.file.originalname)
  var file = __dirname + '/uploads/' + req.file.originalname;
  fs.readFile(req.file.path, function (err, data) {
    fs.writeFile(file, data, function (err) {
      if (err) {
        console.error(err);
        var response = {
          message: 'Sorry, file couldn\'t be uploaded.',
          filename: req.file.originalname
        };
      } else {
        response = {
          message: 'File uploaded successfully',
          filename: req.file.originalname
        };


        artisan = new artisanModel({
          firstName: req.body.firstName,
          lastName: req.body.lastName,
          email: req.body.email,
          password: req.body.password,
          tel: req.body.tel,
          image:  req.file.originalname

        })

        artisan.save(function (err) {
          if (err) {
            res.send({'State': 'Not Ok', 'msg': 'err' + err})
          }
          else {
            res.send({'State': 'Okay', 'msg': 'added'})
          }
        });
      }``
    });
  })
})

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Пожалуйста, проверьте документацию Multer, он не будет обрабатывать любую форму, которая не является составной (multipart / form-data).

NOTE: Multer will not process any form which is not multipart (multipart/form-data).

https://www.npmjs.com/package/multer

Проверьте вторую строку вссылка выше.

РЕДАКТИРОВАТЬ

Пожалуйста, загрузите изображения с помощью почтальона, изменив тип телосложения на данные формы, и загрузите изображение.Смотрите скриншот. here

0 голосов
/ 25 апреля 2019

// модель

//Require Mongoose
var mongoose = require('mongoose');


//Define a schema
var Schema = mongoose.Schema;

var artisanModelSchema = new Schema({
  firstName: {type:String,
    trim:true,
    required:false},

  lastName : {
    type:    String,
    trim:true,
    required:false},
  tel : {
    type:    String,
    trim:true,
    required:false},
  adresse: {
    type:    String,
    trim:true,
    required:false},
  password: {
    type: String,
    trim: true,
    required: false
  },
  imagee:
    { dataa: Buffer, contentType: String , path : String }



});
var artisanModel=mongoose.model('artisanModel',artisanModelSchema);
module.exports=artisanModel;
...