История действий Node.js против журнала - PullRequest
0 голосов
/ 08 ноября 2018

Я хотел бы создать коллекцию истории действий, в которой хранится информация о действиях. которые были сделаны исполнителями. Исполнителями могут быть клиенты, поставщики или даже администраторы.

Цель состоит в том, чтобы иметь историю, журнал / список действий каждого из пользователей, легко и полностью. управление.

Это класс 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
});

Таким образом, у меня может быть коллекция, хранящая историю действий, совершенных пользователем.

Мой вопрос - пожалуйста, позвольте мне разделить его на полу-суб-вопросы:

  1. Должен ли я назвать класс - Журнал? Я обеспокоен тем, что он столкнется с инструментами регистрации ошибок, как например Уинстон. Как мне это назвать, лог, активность или что-то еще?

  2. Я создал собственный класс, но, может быть, вы знаете, что модуль делает что-то похожее - так что я могу иметь ссылку или модуль для изучения и сравнения?

  3. Далее я хотел бы напечатать сделанные изменения - предоставленные из коллекции журналов (или как она будет названа). Знаете ли вы какой-либо модуль для отображения этих изменений? Я говорю о чем-то вроде того, как Git отображает изменения.

...