В 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. Это позволит вам отслеживать и регистрировать каждое изменение данных в базе данных в режиме реального времени.