В документах указано, что транзакция завершается неудачей, когда:
Транзакция считывает документ, который был изменен вне транзакции.
Мне интересно, относится ли это также к запросам на чтение, которые могут возвращать более одного документа (через .where('x', '==', 'y')
).Будет ли транзакция все еще неудачной, если запрос Read вернет больше результатов, если он будет выполнен снова когда-нибудь во время транзакции?
Чтобы проиллюстрировать мой вопрос, допустим, у меня есть коллекция автомобилей со следующей схемой:
{
ownerId: string,
make: string,
horsepower: int
...
}
Теперь я опрашиваю машины определенного владельца в transaction.get()
звонке:
transaction.get(firestore.collection('cars').where('ownerId', '==', '123'))...
Допустим, я получаю Snapshot
с 2 машинами, основываясь на этих автомобилях.Я хочу сделать немного магии в сделке.Во время транзакции для этого владельца добавляется для этого владельца (поэтому он не является частью первоначального снимка).В этом случае произойдет ли транзакция?
PS: я не ищу другого решения, приведенный выше пример вымышлен, я просто хочу понять, как транзакция ведет себя в этом случае.