Могу ли я объединить операции add () и set () в облачном Firestore? - PullRequest
0 голосов
/ 21 июня 2019

От Документы Firebase , получаем:

Пакетные записи

Если вам не нужно читать какие-либо документы в вашем наборе операций, вы можете выполнить несколько операций записи в виде одного пакета, который содержит любую комбинацию операций set (), update () или delete (). Пакетная запись завершается атомарно и может выполнять запись в несколько документов.

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

Есть ли способ сделать это?

Примечание: Я использую Javascrip SDK.

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Просто используйте метод doc() в CollectionReference с последующим вызовом метода set() в BatchedWrite, чтобы «подражать» вызову метода add(),

Выдержка из https://firebase.google.com/docs/reference/js/firebase.firestore.CollectionReference#doc:

Если путь не указан, автоматически сгенерированный уникальный идентификатор будет использоваться для возвращенных DocumentReference.

Следовательно, в вашей партии вы можете сделать:

// Get a new write batch
var batch = db.batch();

// A "standard" Set
var nycRef = db.collection("cities").doc("NYC");
batch.set(nycRef, {name: "New York City"});

// A Set that is similar to an Add
var unknownCityRef = db.collection("cities").doc();
batch.set(unknownCityRef, {name: "Unknown City"});

// Commit the batch
batch.commit().then(function () {
    // ...
});
1 голос
/ 21 июня 2019

Если вы делаете

 const batch = firestore().batch()
 const sampleRef = firestore().collection(‘sample’)
 const id = sampleRef.doc().id
 batch.set(sampleRef.doc(id), {...})
 batch.commit()

Он должен сделать трюк, его тоже самое, что добавить

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