Как я могу создать и прикоснуться к документу, только если для него уже нет ни одного документа? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть случай, когда, если в моей базе данных Firestore есть данные, я хочу, чтобы они потерпели неудачу при создании нового документа, и определенно не перезаписывали и не отправляли какие-либо обновления в этот документ.

Я делаюэто в партиях, поэтому я не могу получить ни одного пакета, иначе он убивает всю партию.

Вот что я попробовал / исключил:

batch.update - исключен из-за обновленияdata batch.set - по умолчанию исключено перезапись данных. batch.set...{merge: true} - исключено перезапись любых полей, которые у меня уже есть. batch.create - Это выглядело обнадеживающе, но не удалось, когда документ уже существует

let batch = db.batch()
...
batch.xyz(refToCreateOnly, Data) // this should be successful either way such that it does not kill the batch, and only updates if the ref does not exist
...
await batch.commit()

Это лучший / возможно единственный способ сделать это с транзакцией?

1 Ответ

0 голосов
/ 25 октября 2019

Да, единственный вариант здесь - использовать транзакцию, чтобы проверить, что документ не существует до его добавления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...