Я хотел бы создать коллекцию истории действий, в которой хранится информация о действиях.
которые были сделаны исполнителями. Исполнителями могут быть клиенты, поставщики или даже администраторы.
Цель состоит в том, чтобы иметь историю, журнал / список действий каждого из пользователей, легко и полностью.
управление.
Это класс Log
, который я только начал создавать:
module.exports = class Log {
constructor(req, params) {
this.req = req;
this.params = params;
this.action;
}
createdEmployee(cb) {
this.action = {
type: "insert",
title: "Created employee",
title_translated: t["Created employee"],
short_description: this.params.short_description || null
}
return this.insert(cb);
}
updatedSupplier(cb) {
this.action = {
type: "update",
title: "Updated supplier",
title_translated: t["Updated supplier"],
short_description: this.params.short_description || null
}
return this.insert(cb);
}
insert(cb) {
let newValues = {
_supplier: this.req._supplier, // the organization id of the creator
_user: this.req._user, // the id of the creator
action: this.action,
date: new Date(),
log: {
old_record: this.params.old_record || {},
new_record: this.params.new_record || {}
},
api_endpoint_metadata: {
url: this.req.url,
method: this.req.method
}
};
db.logs.insert(newValues, function(err, docs) {
if (err) return cb(err);
return cb();
});
}
}
И вот как это можно использовать для документа вставка действие:
let params = {
short_description: "John Awesome",
old_record: {},
new_record: obj // some object with the new data to be inserted
}
let log = new Log(req, params);
log.createdEmployee(err => {
// some code
});
И вот как это можно использовать для документа обновление действие:
let params = {
short_description: "Changed permission level",
old_record: old_obj, // the current record - before changes
new_record: obj // some object with the new data to be updated
}
let log = new Log(req, params);
log.updatedSupplier(err => {
// some code
});
Таким образом, у меня может быть коллекция, хранящая историю действий, совершенных пользователем.
Мой вопрос - пожалуйста, позвольте мне разделить его на полу-суб-вопросы:
Должен ли я назвать класс - Журнал? Я обеспокоен тем, что он столкнется с инструментами регистрации ошибок,
как например Уинстон. Как мне это назвать, лог, активность или что-то еще?
Я создал собственный класс, но, может быть, вы знаете, что модуль делает что-то похожее - так что я могу иметь ссылку
или модуль для изучения и сравнения?
Далее я хотел бы напечатать сделанные изменения - предоставленные из коллекции журналов (или как она будет названа).
Знаете ли вы какой-либо модуль для отображения этих изменений? Я говорю о чем-то вроде того, как Git отображает изменения.