PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Firebase:Wie liest man aus einer externen DB?

Ich hatte ein ähnliches Problem zu lösen und als Übergangslösung Ich habe die App mit Firebase Admin ServiceAccount initialisiert. Dann auf Änderungen der Firebase-Sammlung auf meinem Server gelauscht und bei neuem Wert empfangene Werte in PostgreSQL eingefügt/aktualisiert.

App als Administrator initialisieren und auf Firebase auf Änderungen warten:

  admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'https://yourfirebaseproject.firebaseio.com',
  });

  const db = admin.database();

  db.ref('User').on('value', async (snapshot) => {
    insertOrUpdate(User, 'users', snapshot.val());
  });

Daten in PostgreSQL einfügen/aktualisieren:

const insertOrUpdate = (model, tableName, data) => {
  const firstData = data[0] ? data[0] : data;

  return model.knex().raw(
    knex(tableName).insert(data).toQuery() + ' ON CONFLICT ("id") DO UPDATE SET ' +
      Object.keys(firstData).map((field) => `${field}=EXCLUDED.${field}`).join(', ')
  );
};