我正在尝试一个可以在负载均衡器后水平缩放的系统。
当我添加多个Node JS实例时,我将对SQL表进行多次添加。 例如,我要向'/ messages_out'批量添加1000条消息,并且两个(或多个)节点实例旨在从firebase中删除该条目,并将其作为事务保留在SQL表中。
我猜我对Promise /一般方法的使用是错误的,但是尝试了各种“链”并查找了Firebase方法和示例,但无法使其正常工作。这是我第一次深入研究Node / JS / Firebase ...
任何帮助将不胜感激。
const log4js = require('log4js');
const logger = log4js.getLogger();
logger.level = 'debug';
var admin = require('firebase-admin');
var Sequelize = require('sequelize');
const sequelize = new Sequelize('lachat', 'la-admin', 'password', {
host: '10.5.11.43',
dialect: 'mysql',
pool: {
max: 100,
min: 5,
acquire: 30000,
idle: 10000
}
});
const InboundMessage = sequelize.define('inbound_message', {
sender: {
type: Sequelize.STRING
},
message: {
type: Sequelize.STRING
},
target: {
type: Sequelize.STRING
}
});
watcher = admin.database().ref('/messages_out').on('child_added', (snap) => {
logger.debug(`GOT MESSAGE IN => ${JSON.stringify(snap.val())}`);
//Grab it and delete...
//Persist it
const snapshot = snap.val();
admin
.database()
.ref(snap.ref)
.transaction(() => {
return admin.database().ref(snap.ref).remove();
})
.then(() => {
return InboundMessage.create({
sender: snapshot.sender,
message: snapshot.message,
target: snapshot.target
});
})
.then((persisted) => {
logger.debug('SUCCESS');
})
.catch((err) => {
return Promise.reject(err);
});
});
exports.watcher = watcher;