Я пытаюсь «прослушать» удаление события в схеме MongoDB с именем Post . Как только пользователь удалит одно сообщение с одним изображением в AmazonWeb Cloud, я должен удалить это изображение из облака. Моя проблема в том, что этот слушатель не работает, возможно, он устарел; Мне нужна альтернатива этому коду.
Вот код схемы ( PostSchema ):
//imports
const mongoose = require('mongoose');
const aws = require('aws-sdk');
const fs = require('fs');
const path = require('path');
const { promissify } = require('util');
//using AWS's lib
const s3 = new aws.S3();
//Schema declaration
const PostSchema = new mongoose.Schema({
name: String,
size: Number,
key: String,
url: String,
createdAt: {
type: Date,
default: Date.now
}
});
//listener to all 'save' events (it works)
PostSchema.pre('save', function() {
if(!this.url) {
this.url = `${process.env.APP_URL}/files/${this.key}`
}
});
//LISTENER THAT NOT WORKS
PostSchema.pre('remove', function() {
//if the storage type defined is AWS, delete image from AWS
//else, delete from local storage
if(process.env.STORAGE_TYPE == 's3') {
return s3.
deleteObject({
Bucket: 'upload-example-nodeapp',
Key: this.key
})
.promise()
} else {
return promissify(fs.unlink)(
path.resolve(__dirname, '..', '..', 'tmp', 'uploads', this.key)
);
}
});