В настоящее время у меня настроен моментальный снимок запроса, позволяющий получать данные в реальном времени из моего экземпляра Firestore:
let query = db.collection('Tasks')
.where('active', '==', 1)
.where("starts", ">", +new Date())
.where('user', '==', userId)
.orderBy('starts', 'asc').limit(25);
let observer = query.onSnapshot(async snapshot => {
snapshot.docChanges().forEach(change => {
renderTask(change.doc, change.type);
});
}, err => {
console.trace(err);
});
Однако при добавлении новой «Задачи» и превышении предельного значения в запросе, ie когда запрос в настоящее время прослушивает 25 документов, он вызывает прослушиватель моментальных снимков, сообщая, что документ был удален. Где change.type === 'removed'
, но на самом деле никакие документы, которые прослушивались, не изменились.
В настоящее время я использую этот метод, чтобы проверить, действительно ли пользователь удалил «Задачу», где active == 0
, но когда я go сверх лимита для вызова документов в запросе, он также удаляет случайную «задачу».
Я пробовал добавить предложение if, чтобы проверить, содержат ли данные документа active = 0
, но это не ' t работает и документ (даже если он был изменен на active = 0
, он все еще содержит active = 1
, и я предполагаю, что Firestore не беспокоится о возврате обновленного документа, поскольку предполагает, что он не будет использоваться? Это не ' t идеально, так как я бы также предположил, что список для документа также будет отделен, если firestore считает, что документ был удален.
Как я могу различать документы, которые были фактически удалены, ie active === 0
и документы, которые удаляются из-за достижения порогового значения количества запросов?
Заранее большое спасибо.