Я создал класс JavaScript, который присоединяет определенные ловушки к любой схеме mon goose и создает в базе данных данные журнала об этой определенной схеме (когда создается схема, что было сохранено, когда она обновляется ранее). и после моментального снимка данных, а также того, какой пользователь сделал это изменение / сохранение)
let hooks = {
preSave : false,
preDeleteMany : false,
postInsertMany : false,
postDeleteMany : false
}
new GenericHook(UserSchema, 'User', hooks).init();
/**
* @typedef User
*/
module.exports = mongoose.model('User', UserSchema);
Вот как некоторые ловушки присоединяются к схеме, один из методов класса выглядит следующим образом:
// POST: Triggers when Model.findOneAndDelete() method is called
createPostFindAndDeleteHook(){
let that = this;
this.genericSchema.post('findOneAndDelete', async function(document){
let currentUserId = localStorage.getItem('userId');
let options = {
model : that.schemaName,
action : actions.DELETE,
user : currentUserId ? currentUserId : null,
before_data : document,
after_data : null
}
await log.create(options);
});
}
Хуки прикреплены, и они отлично работают, сохраняют нужные данные в полях до и после, но проблема в том, что сейчас, используя пакет node-localstorage, последний пользователь, который вошел в систему, переопределяет элемент userId в локальном хранилище, сохраняя неправильный userId в базе данных. Элемент устанавливается, когда пользователь успешно входит в систему.
localStorage.setItem('userId' , userData[0]._id);
Есть ли способ сохранить идентификатор пользователя для каждого пользователя и получить к нему доступ на крючке, чтобы я могу сохранить нужного пользователя, создавая / обновляя / удаляя что-то из базы данных?