Я новичок в node.js и пытаюсь сохранить фотографии пользователей в mongodb.
Вот маршрутизатор:
router.post('/addphoto', checkAuth, upload.single('image'), (req, res)=> {
let filename = Math.floor(Math.random() * 100000)
console.log('imgId is', filename );
const photoFields = {};
photoFields.photos = []
if(req.file) photoFields.image = req.file.path ;
photoFields.user = req.user.id;
Photo.findOne({ _id: req.user.id }).then(photo => {
if(photo) {
//Update
console.log('photo found! \n\n');
Photo.findOneAndUpdate(
{user: req.user.id},
{$set: photoFields},
{new: true}
).then(photo => res.json(photo));
} else {
console.log('No photo found! \n\n');
//Create
photoFields.photos[0].imgId = filename ;
photoFields.photos[0].isProfileImg = true ;
photoFields.photos[0].visible = 'all';
//Save
new Photo(photoFields).save().then(photo=> {
res.json(photo);
}).catch(err => {
console.log('could not save photo \n\n');
console.log(err);
}
);
}
})
});
Каждый пользователь может загрузить несколько фотографий, так что вотсхема фото, в которой фотографии представляют собой массив объектов:
const PhotoSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'users'
},
photos: [
{
imgId: {
type: Number,
},
isProfileImg: {
type: Boolean,
default: true,
},
visible: {
type: String,
}
}
]
});
Как видите, я создаю imgId с использованием случайной функции и вижу, что она создана:
imgId is 65609
Тем не менее, я все еще получаю эту ошибку в консоли:
(node:5295) UnhandledPromiseRejectionWarning: TypeError: Cannot set property 'imgId' of undefined
И изображение не сохраняется.
Я использую multer для извлечения файла из сообщения запроса и могу установить в консоли, что файл принимается.
Я ценю ваши подсказки, чтобы исправить эту ошибку, которая беспокоит меня часами.