Есть ли способ обновить два документа, каждый в другой коллекции, в одном запросе?
Я знаю, что вы можете выполнить пакетную запись, используя FIRWriteBatch
- Кажется, это ограничено той же коллекцией для любых обновлений документа.При попытке прикрепить обновления для документов в двух разных коллекциях:
// Just for example
FIRWriteBatch *batch = FIRWriteBatch.new;
[batch updateData:@{@"posts" : @1} forDocument:[self.firebase.usersCollection documentWithPath:@"some_user_id"]];
[batch setData:@{@"test" : @"cool"} forDocument:[self.firebase.postsCollection documentWithPath:@"some_post_id"]];
[batch commitWithCompletion:^(NSError * _Nullable error) {
NSLog(@"error: %@", error.localizedDescription);
}];
Он никогда не выполняется - приложение вылетает, и я получаю следующее:
Terminating app due to uncaught exception 'FIRInvalidArgumentException', reason:
'Provided document reference is from a different Firestore instance.'
Видимо, пакет ненапример, обновления в более чем одной коллекции.
- Кто-нибудь знает, как можно обновить два документа, каждый в другой коллекции, без сбоя одного и последующего?
Я хочу избежать, например, успешного задания posts = 1
для документа в usersCollection , в то время как не удалось записать новый документ в postsCollection .
Я понимаю, что маловероятно, что один из них напишет, а другой потерпит неудачу, но в случае, если это произойдет , я, очевидно, не хочу противоречивых данных.
ПРИМЕЧАНИЕ:
Для всех, кому не все равно - я не знаю, выйдет ли когда-нибудь , но сейчас я выполняю транзакцию без чтение документа перед обновлением данных... ?♂️ Приветствие к -1 вызову API!