моя схема выглядит так
const RecipeSchema = mongoose.Schema({
user: [
{
userName: { type: String, required: true },
userID: { type: String, required: true },
userPicture: { data: Buffer, type: String, required: true }
}
],
recipeName: {
type: String,
required: true
},
created: {
type: Date,
required: true
},
ingredient: {
type: String,
required: true
},
rating: {
type: String
},
steps: [
{
step: { type: String },
picture: { type: String }
}
],
comments: [
{
comment: { type: String },
reply: { type: String }
}
],
pictures: [
{
picture: { data: Buffer, type: String, required: true }
}
]
})
let Recipe = (module.exports = mongoose.model('Recipe', RecipeSchema))
Мой метод публикации и настройки мультера выглядят так.
const multer = require('multer')
const storage = multer.diskStorage({
destination: './route/uploads',
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})
const upload = multer({
storage: storage,
limits: { fileSize: 1000000 },
fileFilter: function(req, file, cb) {
checkFileType(file, cb)
}
})
function checkFileType(file, cb) {
const filetypes = /jpeg|jpg|png|gif/
const extname = filetypes.test(path.extname(file.originalname).toLowerCase())
const mimetype = filetypes.test(file.mimetype)
if (mimetype && extname) {
return cb(null, true)
} else {
cb('Error: Images Only!')
}
}
router.post('/', upload.array('files', 10), (req, res) => {
let files = req.files
var recipe = new Recipe()
for (const key in files) {
if (files.hasOwnProperty(key)) {
console.log(files[key].path)
const fl = fs.readFileSync(files[key].path)
recipe.pictures.picture.data = fl
recipe.pictures.picture.type = 'image/png' // or 'image/png'
}
}
recipe.save()
})
и я получаю эту ошибку
TypeError: Невозможно установить свойство 'data' из неопределенного
Несмотря на то, что изображения сохранены, когда я пытаюсь сохранить путь в буфере, это не позволяет мне. на мангусте сейчас не ясно, как инициировать буфер.