无法读取未定义的nodejs猫鼬的属性``原始名称''

时间:2019-04-25 01:12:23

标签: node.js angular express mongoose

我正在尝试使用mongooseexpressmulter存储图像,但是当我用邮递员测试时,总是会出现以下错误:

  

TypeError:无法读取未定义的属性“原始名称”

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 :(得分:0)

//型号

//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;

答案 1 :(得分:0)

请检查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

相关问题