Ist es in Firebase Cloud Functions möglich, ein Dokument sicher asynchron zu aktualisieren, ohne auf seine Rückkehr warten zu müssen?
<p>In meiner Firebase Cloud Functions-Datei habe ich die folgende lokale Funktion, die einen Dokumentenabruf- und -aktualisierungsvorgang ausführt, bevor einige Eigenschaften zurückgegeben werden. </p>
<pre class="brush:php;toolbar:false;">asynchrone Funktion getRandomDocLessThanOperator(seed) {
versuchen {
const db = admin.firestore();
const snapshot = waiting db.collection("users").where("random", "<=", Seed)
.limit(1)
.erhalten();
if (snapshot.empty) {
return null; // Der Aufrufer versucht dann den Größer-als-Operator
}
const doc = snapshot.docs[0];
doc.ref.update({"random": seeds}); // Mit neuem Seed aktualisieren
return doc.get("uid");
} Catch (Fehler) {
throw new Error(error);
}
}</pre>
<p>Diese Funktion funktioniert einwandfrei, aber ich mache mir Sorgen, dass ich versuche, das Dokument vor der Rückkehr asynchron zu aktualisieren. Beim Testen konnte die Dokumentation jedoch immer wieder aktualisiert werden. Ist es jedoch möglich, dass diese Funktion abläuft, bevor das Update abgeschlossen ist? </p>
<p>Um das Problem zu beheben, habe ich versucht, mit <code>await</code> auf Updates zu warten: </p>
<pre class="brush:php;toolbar:false;">const doc = snapshot.docs[0];
Warten Sie auf doc.ref.update({"random": Seed});
return doc.get("uid");</pre>
<p>Wenn ich dies jedoch mache, gibt die Funktion die erwartete Zeichenfolge zurück, aktualisiert das Dokument jedoch nicht. </p>
<ol>
<li>Warum verhindert das Hinzufügen von <code>await</code> vor dem Aktualisierungsvorgang die Aktualisierung? </li>
<li>Ist es sicher, nicht auf Aktualisierungen zu warten und diese asynchron durchzuführen, wie im ersten Beispiel? </li>
</ol><p><br /></p>