J'ai eu un problème similaire à résoudre et en tant que solution temporaire J'ai initialisé l'application avec le compte de service d'administration firebase. Ensuite, j'ai écouté les modifications de la collection firebase sur mon serveur et sur la nouvelle valeur reçue, j'ai inséré\mis à jour les valeurs dans PostgreSQL.
Initialisez l'application en tant qu'administrateur et écoutez les modifications sur Firebase :
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());
});
Insérer\mettre à jour les données dans PostgreSQL :
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(', ')
);
};