Я сделал локальный тест, и это возможно.Вам нужно определить 2 разных клиента sequelize.Если вы используете генератор CLI и настраиваете службу на основе секвелирования, у вас должна быть строка подключения (мой пример - mysql db):
строка подключения дБ в конфигурации/default.json
"mysql" : "mysql://user:password@localhost:3306/your_db"
a sequelize.js
в корневой папке src
Для созданиявторой клиент sequelize
создать новую строку подключения в config/default.json
"mysql2" : "mysql://user:password@localhost:3306/your_db_2"
создать копиюфайла sequelize.js и назовите его sequelize2.js
const Sequelize = require ('sequelize');
module.exports = function (app) {
const connectionString = app.get('mysql2');
const sequelize2 = new Sequelize(connectionString, {
dialect: 'mysql',
logging: false,
operatorsAliases: false,
define: {
freezeTableName: true
}
});
const oldSetup = app.setup;
app.set('sequelizeClient2', sequelize2);
app.setup = function (...args) {
const result = oldSetup.apply(this, args);
// Set up data relationships
const models = sequelize2.models;
Object.keys(models).forEach(name => {
if ('associate' in models[name]) {
models[name].associate(models);
}
});
// Sync to the database
sequelize2.sync();
return result;
};
};
добавьте новую конфигурацию sequelize в ваше приложение.js
const sequelize2 = require('./sequelize2');
app.configure(sequelize2);
Затем в вашей модели с точностью до секунды дБ:
const Sequelize = require('sequelize');
const DataTypes = Sequelize.DataTypes;
module.exports = function (app) {
//load the second client you defined above
const sequelizeClient = app.get('sequelizeClient2');
//to check if connect to a different db
console.log ( sequelizeClient )
//your model
const tbl = sequelizeClient.define('your_table', {
text: {
type: DataTypes.STRING,
allowNull: false
}
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
// eslint-disable-next-line no-unused-vars
tbl.associate = function (models) {
// Define associations here
// See http://docs.sequelizejs.com/en/latest/docs/associations/
};
return tbl;
};
Для работы вам нужно 2 разных сервиса, каждый из которых работает с разным дб.Если вы хотите поставить или получить одно действие, вы можете создать до / после хук в одном из сервисов и вызвать внутри хука второй сервис.Для получения вам нужно добавить результат второго сервиса к вашему результату ловушки