Как лучше организовать логирование изменений данных с сохранением в БД в Sails.js?

В Sails.js логирование изменений данных и их сохранение в БД может быть организовано с использованием библиотеки MongoDB. В данном случае, можно воспользоваться функциональностью MongoDB для репликации данных и использовать механизм Change Streams для отслеживания и логирования изменений.

Вначале, необходимо установить и настроить MongoDB. Затем, установите модуль mongodb с помощью npm команды:

npm install mongodb

После установки, создайте файл в директории api/hooks c именем changeStream.js. В этом файле будет определен хук, который будет отвечать за инициализацию подключения к MongoDB и создание Change Stream.

const { MongoClient } = require('mongodb');

module.exports = function defineMongoDBHook(sails) {
  return {
    initialize: async function () {
      const client = new MongoClient(sails.config.datastores.default.url, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
      });

      try {
        await client.connect();
        const db = client.db(sails.config.datastores.default.database);
        const collection = db.collection('auditLogs');
        
        const changeStream = collection.watch();
        changeStream.on('change', (change) => {
          // Обработка изменений и логирование
          console.log(change);
        });
        
        sails.changeStream = changeStream;
      } catch (error) {
        sails.log.error(error);
      }
    },
  };
};

Затем, добавьте встроенный хук sails-hook-orm в файл config/hooks.js, чтобы получить доступ к параметрам подключения к MongoDB:

module.exports.hooks = {
  "sails-hook-orm": {
    enabled: true,
  },
  // ...
};

Теперь, при каждом изменении данных в указанной коллекции в базе данных, в консоли будет отображена информация об изменениях. Вы можете дополнить этот код для организации записи логов в БД или другой механизм логгирования, например, sails.log или другой сторонний модуль логирования.

Помимо этого, вы можете настроить MongoDB для репликации данных, чтобы не потерять события изменения данных в случае отказа или сбоев в системе. Обратитесь к официальной документации MongoDB для получения дополнительной информации по этой теме.

В итоге, таким образом, вы можете организовать логирование изменений данных с сохранением в БД в Sails.js с использованием библиотеки MongoDB и ее функциональности Change Stream. Это позволит вам отслеживать и регистрировать каждое изменение данных в базе данных в режиме реального времени.