Я использую node, express и multer для загрузки файлов в приложение angular, имея mongoDB для базы данных. Когда я загружаю файл, хотя он загружается в целевую папку с именем uploads, которую я объявил как stati c в своем индексе. js, его путь к файлу не отображается в базе данных и остается пустым в качестве значения по умолчанию. Ниже приведен снимок моей базы данных, когда форма создана и изображение также загружено, но поле imagePath, где должно быть расположение, остается пустым
{
"title": "title to check file upload second time",
"description": "checking file upload check",
"bodyHtml": "",
"views": 0,
"isPublished": true,
"category": "Drama",
"author": "",
"imagePath": "",
"_id": "5e399bd4de5df134604a662f",
"blogId": "ZSiEu37z",
"created": "2020-02-04T16:29:08.000Z",
"lastModified": "2020-02-04T16:29:08.000Z",
"__v": 0
}
настройки мультипроцессора на контроллере:
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)
}
})
const upload = multer({storage: storage})
let setRouter = (app) => {
let baseUrl = appConfig.apiVersion+'/blogs';
app.post(baseUrl+'/create', upload.single('imagePath'), (req, res) => {
var today = time.now()
let blogId = shortid.generate()
let newBlog = new BlogModel({
blogId: blogId,
title: req.body.title,
description: req.body.description,
imagePath: req.body.imagePath
}) // end new blog model
newBlog.save((err, result) => {
if (err) {
console.log(err)
res.send(err)
} else {
res.send(result)
}
}) // end new blog save
})
модель блога
// importing mongoose module
const mongoose = require('mongoose')
// import schema
const Schema = mongoose.Schema;
let blogSchema = new Schema(
{
blogId: {
type: String,
unique: true,
index: true
},
title: {
type: String,
default: ''
},
description: {
type: String,
default: ''
},
imagePath: {
type: String,
default: ''
}
}
)
mongoose.model('Blog', blogSchema);