Saya memiliki masalah serupa untuk dipecahkan dan sebagai solusi sementara Saya menginisialisasi aplikasi dengan firebase admin serviceAccount. Kemudian dengarkan perubahan koleksi firebase di server saya dan pada nilai baru yang diterima dimasukkan\memperbarui nilai di PostgreSQL.
Inisialisasi aplikasi sebagai admin dan dengarkan perubahan di 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());
});
Masukkan\perbarui data ke dalam 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(', ')
);
};