var Firebase = require('firebase'); var dbConnectionUrl = 'https://foo-database.firebaseio.com/posts/java_script' var dbReference = new Firebase(dbConnectionUrl); dbReference.on('child_added', function(addedChildSnap){ var addedChildValue = addedChildSnap.val(); //addedChildSnap .. "", doDomethingWithAddedChild(childValue); }); dbReference.once('child_removed', function(removedChildSnap){ var removedChildValue = removedChildSnap.val(); doSomethingWithRemovedChild(removedChildValue); });
var dbRootReference = new Firebase('https://foo-database.firebaseio.com/'); var newRequestedUser = { firstName: 'John', lastName: 'Connor', email: connor.john@domain.com }; dbRootReference.child('users_requested').push(newRequestedUser);
// AQMP - , RabbitMQ // (amqp, node-amqp, bramqp ..), "amqplib" var amqp = require('amqplib'); var amqpConnectionUrl = 'amqp://localhost'; // var amqpConnection = amqp.connect(amqpConnectionUrl); // var QUEUE_USERS_REQUESTED = 'requestedUsers'; var QUEUE_USERS_APPROVED = 'approvedUsers'; // ( ) amqpConnection.then(function (successAmqpConnection) { successAmqpConnection .createChannel() .then(function (amqpChannel) { // // , // channel requested amqpChannel.assertQueue(QUEUE_USERS_REQUESTED, {durable: false, noAck: false}); // channel approved amqpChannel.assertQueue(QUEUE_USERS_APPROVED, {durable: false, noAck: false}); //noAck , TRUE (ack: true noAck: false), // , , // QUEUE_USERS_REQUESTED amqpChannel.consume(QUEUE_USERS_REQUESTED, function (msg) { if (msg !== null) { var requestedUserDetails = JSON.parse(msg.content.toString()); // JSON- return removeUserFromRequests(requestedUserDetails) .then(validateUser) .then(function (isValid) { if (isValid) { return; } else { throw Error('user not valid'); } }) // 'users_approved' //dbRootReference.child(USERS_APPROVED).push(requestedUserDetails); .then(addUserAsApproved) .then(function (result) { // , ack(); amqpChannel.ack(msg); // , , }) .catch(function (err) { // amqpChannel.ack(msg); }); } else { // // , , - amqpChannel.ack(msg); } }); // QUEUE_USERS_APPROVED amqpChannel.consume(QUEUE_USERS_APPROVED, function (msg) { if (msg !== null) { var approvedUserDetails = JSON.parse(msg.content.toString()); // JSON- sendWelcomeMessage(approvedUserDetails) // .then(function (result) { amqpChannel.ack(msg); // AQMP-, }); } else { amqpChannel.ack(msg); // , , } }); }); }); // publisher' function pushToUserRequestedQueue(requestedUser) { return amqpChannel.sendToQueue(QUEUE_USERS_REQUESTED, JSON.stringify(requestedUser)); } function pushToUserApprovedQueue(approvedUser) { return amqpChannel.sendToQueue(QUEUE_USERS_APPROVED, JSON.stringify(approvedUser)); }
// var Firebase = require('Firebase'); var dbUrl = 'https://foo-database.firebaseio.com/'; var dbRootReference = new Firebase(dbUrl); var USERS_REQUESTED = 'users_requested'; var USERS_APPROVED = 'users_approved'; // 'users_requested' dbRootReference.child(USERS_REQUESTED).on('child_added', function (requestedUserSnap) { var requestedUser = requestedUserSnap.val(); // sendMessageToUserRequestedQueue(requestedUser); }); // 'users_requested' dbRootReference.child(USERS_APPROVED).on('child_added', function (newApprovedUserSnap) { var approvedUser = newApprovedUserSnap.val(); // sendMessageToUserApprovedQueue(approvedUser); });
Source: https://habr.com/ru/post/263643/
All Articles