Firebase Cloud Functions에서는 문서가 반환될 때까지 기다리지 않고 문서를 비동기식으로 안전하게 업데이트할 수 있나요?
<p>내 Firebase 클라우드 함수 파일에는 일부 속성을 반환하기 전에 문서 가져오기 및 업데이트 작업을 수행하는 다음과 같은 로컬 함수가 있습니다. </p>
<pre class="brush:php;toolbar:false;">비동기 함수 getRandomDocLessThanOperator(seed) {
노력하다 {
const db = admin.firestore();
const snapshot = db.collection("users").where("random", "<=", seed)를 기다립니다.
.한도(1)
.얻다();
if (스냅샷.비어 있음) {
return null; // 그런 다음 호출자는 보다 큼 연산자를 시도합니다.
}
const doc = snapshot.docs[0];
doc.ref.update({"random": seed}); // 새로운 시드로 업데이트
return doc.get("uid");
} 잡기(오류) {
새로운 오류 발생(오류);
}
}</pre>
<p>이 함수는 잘 작동하지만 반환하기 전에 문서를 비동기적으로 업데이트하려고 시도하는 것이 걱정됩니다. 그러나 테스트에서는 문서 업데이트가 실패한 적이 없습니다. 하지만 업데이트가 완료되기 전에 이 기능이 시간 초과될 가능성이 있습니까? </p>
<p>어쨌든 문제를 해결하기 위해 <code>await</code>를 사용하여 업데이트를 기다려 보았습니다. </p>
<pre class="brush:php;toolbar:false;">const doc = snapshot.docs[0];
doc.ref.update({"random": 시드})를 기다립니다;
return doc.get("uid");</pre>
<p>그러나 이렇게 하면 함수가 예상한 문자열을 반환하지만 문서를 업데이트하지 않습니다. </p>
<올>
<li>업데이트 작업 전에 <code>await</code>를 추가하면 업데이트가 방지되는 이유는 무엇입니까? </li>
<li>업데이트를 기다리지 않고 첫 번째 예처럼 비동기적으로 수행하는 것이 안전한가요? </li>