Я пытаюсь отобразить пользователя с его телефонными контактами, которые также являются пользователями моего приложения
Я храню телефонные контакты пользователя в коллекции контактов «Firestore».
В каждом документе, который я создаю на Android, я оставляю поле "fuid" (UID друга) как ноль. Используя облачные функции, каждый раз, когда создается новый документ, я проверяю, совпадает ли его «paPho» (проанализированный номер телефона, например, +972123455) с существующим номером телефона пользователя. Если да, я помещу его uid в соответствующий документ «fuid».
На андроиде я покажу все контакты пользователя, для которых fuid не равен null, и идентификатор соответствия соответствует
Так как у каждого пользователя может бытьболее 500 контактов (все добавлено за очень короткое время) Я использую план Blaze
Он работает довольно хорошо, но, хотя в журнале не обнаружено ошибок, кажется, что onCreate иногда отсутствует.
Причина, по которой я думаю, что она отсутствует, поскольку, если я несколько раз повторно запускаю облачную функцию в том же списке контактов, иногда появляется пропущенный документ.
Может показаться уместным, что эти иногда отсутствующие контакты близки по имени и имеют одинаковый номер телефона
const functions = require('firebase-functions');
exports.attachUserToNewContact = functions.firestore
.document('contacts/{contactId}').onCreate((snap,contex) => {
admin.auth().getUserByPhoneNumber(snap.data().paPho)
.then(userRecord => {
if (userRecord.uid) {
console.log(`userRecord phone ${snap.data().paPho} matching contact ${userRecord.uid}`);
admin.firestore().collection('contacts')
.doc(snap.data().id).update({fuid:userRecord.uid});
}
return 0;
})
.catch(error => {
//There is no user record corresponding to the provided identifier
});
return 0;
});