Экспресс / Multer многофайловая загрузка [объект ОБЪЕКТ] Ошибка - PullRequest
0 голосов
/ 01 октября 2018

, поэтому у меня возникли проблемы при попытке выяснить, что именно консольный журнал пытается сообщить мне с этой ошибкой.Я переписывал свой маршрут загрузки так много раз, и я в замешательстве.

У меня есть загрузка файлов (img) в Cloudinary, все работает (у меня есть другой маршрут, где сообщения загружаются правильно).

Вот соответствующие части моего кода.

UserSchema (проблема связана с профилем: аватар, фон, но я все равно опубликую всю схему)

const UserSchema = new Schema({
  username: {
    type: String,
    required: true,
    minlength: [3, "Username must be at least 3 characters long"],
    maxlength: [25, "Username must be no longer than 25 characters"],
    index: [true, "Username is already in use, please try another"],
    unique: true,
    trim: true
  },
  email: {
    type: String,
    required: true,
    validate: [
      /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, "Email is not valid, please enter a valid email"
    ],
    lowercase: true,
    index: true,
    unique: true
  },
  password: {
    type: String,
    required: true,
    minlength: 6,
    required: true
  },
  posts: [{type: Schema.Types.ObjectId, ref: 'Post'}],
  profile: {
    website: {type: String, validate: [
      /^((https?|ftp|smtp):\/\/)?(www.)?[a-z0-9]+\.[a-z]+(\/[a-zA-Z0-9#]+\/?)*$/,  "URL not valid, please enter a valid URL"
      ],
      lowercase: true,
      trim: true
    },
    forHire: {type: Boolean, default: false},
    location: {type: String, maxlength: 40 },
    bio: {type: String, maxlength: 500},
    avatar:{
        url: {type: String, default: "/static/img/defaultAvatar.png" }, 
        public_id: {type: String}
    },
    background: {
      url:{type: String, default: "/static/img/defaultBG.png"},
      public_id: {type: String}
    }
  }
}, {timestamps: true});

И маршрут (собирается отделить контроллер от маршрута, как только я смогу это выяснить!)

router.put('/:id', auth, uploader.fields([{ name: 'profile.avatar', maxCount: 1 }, { name: 'profile.background', maxCount: 1 }]), (req, res) => {
  console.log(req.files)
  User.findByIdAndUpdate({_id: req.params.id}).then((user) => {
    console.log(user)
    if (user.id !== req.user.id) {
      return res.status(400).json({message: "You are not authorized to edit this User profile."})
    }
    // const profileImg = {
    //   profile:{avatar: {url: req.file.url, public_id: req.file.public_id}}
    // }
    // console.log(profileImg)
    // const backgroundImg = {
    //   profile: {background: {url: req.file[1].url, public_id: req.file[1].public_id}}
    // }
    user.update(req.body, profileImg, backgroundImg).then(result => console.log(result))
  }).catch(err => console.log(err.message))
})

И чтобы проверить его с почтальоном, у меня есть поле файла с именем "profile.avatar", чтобы соответствоватьПоля name, закомментированные profileImg и backgroundImg специально.

Любая помощь, которая может быть предоставлена, будет очень полезной!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...