У меня есть коллекция в пожарном магазине. Я слушаю изменения в бэкэнде узла. Теперь, когда я получаю изменение, я обрабатываю данные и удаляю документ Firestore, связанный с изменением. Когда я вызываю delete, я снова получаю то же самое изменение в слушателе, и в итоге я снова обрабатываю данные.
Я искал по интернету и не смог найти решения этой проблемы.
let doc_form_reponse = db.collection(CONSTANTS.FIREBASE.COLLECTIONS.SUBMISSIONS);
let qref1 = doc_form_reponse.where('context', '==', 'someContext').where('processed', '==', false);
let observer_form_response = qref1.onSnapshot(docSnapshot => {
docSnapshot.docChanges().forEach(docChange => {
let doc = docChange.doc;
// save data to Mongo Db
var survey = Surveyresponse({
resp: docChange.doc.data().response,
metadata: JSON.stringify(docChange.doc.data().metadata)
});
survey.save(function (err, resp) {
if (err) return console.error(err)
else {
console.log(doc.id," deleted from firebase");
doc.ref.delete();
}
})
})
// ...
}, err => {
console.log(`Encountered error: ${err}`);
});
После вызова doc.ref.delete () после получения изменения и получения записи в БД.