Вот мой код:
post. js: Настройка мультера и настройка маршрута, включая сохранение в базе данных отсюда:
const express = require("express");
const router = express.Router();
const passport = require("passport");
// Post model
const Post = require("../../models/Post");
//Multer Setup_______________________________________________________________________________
const multer = require("multer");
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads")
},
filename: function (req, file, cb) {
cb(null, Date.now() + file.originalname);
//cb(null, new Date().toISOString() + file.orignalname)
}
})
const fileFilter = (req, file, cb) => {
//reject a file
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png' || file.mimetype === 'image/jpg') {
cb(null, true);
} else {
cb(null, false)
}
}
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024
},
fileFilter: fileFilter
});
//Multer Setup done_______________________________________________________________________________
// @route POST api/posts/images
// @desc Create an image post
// @access Private
router.post(
"/images",
passport.authenticate("jwt", {
session: false,
}),
upload.single("postImg"),
(req, res) => {
const newPost = new Post({
user: req.user.id,
superName: req.user.superName,
avatar: req.user.avatar,
title: req.body.title,
postImg: req.file.path
});
newPost.save().then((post) => res.json(post)).catch((err) =>
res.status(404).json({
err: err,
})
);;
}
);
Вот моя база данных Model Post. js:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// Create Schema
const PostSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: "usersC3",
},
superName: {
type: String,
},
avatar: {
type: String,
},
title: {
type: String,
required: true,
},
text: {
type: String,
},
postImg: {
Type: String
},
likes: [{
user: {
type: Schema.Types.ObjectId,
ref: "usersC3",
},
}, ],
comments: [{
user: {
type: Schema.Types.ObjectId,
ref: "usersC3",
},
text: {
type: String,
required: true,
},
avatar: {
type: String,
},
likes: [{
user: {
type: Schema.Types.ObjectId,
ref: "usersC3",
},
}, ],
date: {
type: Date,
default: Date.now,
},
}, ],
date: {
type: Date,
default: Date.now,
},
});
module.exports = Post = mongoose.model("post", PostSchema);
Это моя файловая структура, и изображения успешно сохраняются в папке загрузок:
Проблема в том, что URL изображения не сохраняется в моей базе данных. Остальные все значения сохраняются без проблем, и ошибки не отображаются.
Я попытался распечатать "req.file.path", который я хочу сохранить в базе данных, и он выходит в быть строковым значением, т.е. как и ожидалось. Просто не понимаю, где проблема. Вот страница моего почтальона с запросом на обслуживание