tutorial socket node example español ejemplos node.js mongodb asynchronous firebase synchronization

node.js - node - socket.io example



la mejor práctica para la sincronización de datos en nodejs (1)

Me resulta difícil mapear tu código a la API de Firebase. Pero lo que está describiendo parece que se puede lograr al usar transacciones o actualizaciones de ubicaciones múltiples .

Cubrí este tipo de actualizaciones en profundidad en el pasado en: Cómo escribir datos desnormalizados en Firebase

Estoy tratando de hacer algo de integración entre dos sistemas, y tengo algunos problemas cuando se trata de sincronizar datos.

Estoy usando nodejs y la base de datos es mongodb o firebase .

El escenario se describe a continuación:

  • systemA con dbA
  • systemB con dbB

Haz lo siguiente:

  1. systemA envía una solicitud (POST o PUT lo que sea) al sistemaB, el body es así:

    { ..... fieldA1: valueA1, fieldA2: valueA2 ..... }

  2. entonces el sistemaB necesita actualizar varios campos (campoB1, campoB2) en dbB de acuerdo con los datos del sistema A, como este:

    fieldB1: valueA1

    fieldB2: valueA2

  3. después de que se fieldB1 actualizado con éxito tanto fieldB1 como fieldB2 , ejecute más lógica

Estoy usando async para controlar el proceso asincrónico. Mi código para implementar estos 3 pasos:

async.waterfall([ function (callback) { //get valueA1 of fieldA1 and valueA2 of fieldA2 }, async.parallel([ function (callback) { //set valueA1 to fieldB1 }, function (callback) { //set valueA2 to fieldB2 } ], function (err, result) { //more logic here }) ], function (err, result) { //more logic here })

Dado que fieldB1 y fieldB2 deben actualizarse al mismo tiempo , cualquier situación al no actualizar fieldB1 o fieldB2 dará lugar a inconsistencia de datos, que no es el resultado correcto.

Sin embargo, async.parallel no puede garantizar que cualquier falla de actualización revertirá o evitará que la actualización de los demás sea correcta. ¿Hay alguna forma de mantener idealmente la coherencia de los datos de AMBOS cuando se actualizan fieldB1 y fieldB2 ?