코드는 총 번호를 기록하는 것입니다. 특정 사회의 사용자
import * as functions from 'firebase-functions';
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();
export const new_reg = functions.firestore
.document('mobile/{mobile}')
.onCreate((change, context) =>{
const society:String = change.get("society")
let value = 1
admin.firestore().doc(`society/${society}`).get()
.then((userSnapshot: { data: () => { (): any; new(): any; users: number; }; }) => {
value = userSnapshot.data().users
console.log(value)
})
.catch((error: any) => {
console.log(error)
})
++value
console.log(value)
return null
})
"value"의 값은 16 행에서 24 행까지의 코드로 업데이트되지 않습니다.
참고 :-18 행은 코드에 의해 선택되는 값을 확인하기위한 것입니다.
18 행에 의해 콘솔에 기록 된 값은 항상 올바른 값입니다.
24 행에서 증분되는 값은 처음에 선언 한 값이며 firestore에서 검색 한 값이 아닙니다.
get()
약속과 함께 즉시 반환됩니다. 그렇게 then
하고 catch
. 비동기식이며 콜백은 쿼리 결과와 함께 나중에 호출됩니다. 코드는 쿼리가 완료 될 때까지 기다리지 않습니다. 쿼리가 완료되기 전에 계속 진행되고 값이 증가합니다.
Cloud Functions 백그라운드 트리거를 사용하면 모든 비동기 작업이 완료되면 해결 되는 프라 미스를 반환해야합니다 . 지금은 전혀 작동하지 않는 null을 반환하고 있습니다. 대신으로 시작하는 체인에서 promise를 반환해야합니다 get()
.
return admin.firestore().doc(`society/${society}`).get()
.then(...)
.catch(...)
을 (를) 사용해야하는 이유는 명확하지 않지만 value
어떤 경우에도 약속을 올바르게 처리해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다