Firebase 요소의 수를 계산하려면 처음부터이 방법으로 가자! (Cloud Functions)
소개
Firebase 데이터베이스 (이번에는 Firestore의 경우)에 들어있는 데이터의 수를 계산하고 싶을 때가 있죠?
방법은 여러 가지 있지만, 어차피라면 "처음부터!"이 방법으로하는 것이 좋다! 라는 것을, 기사로서 남겨 간다.
Firebase에서 Cloud Functions 시작하기
Cloud Functions가 전혀 모르는 분은 이쪽
다양한 카운트 방법
Firestore 컬렉션의 모든 데이터 수를 얻는 방법
여기에서 2개의 카운트 방법이 소개되고 있다.
하지만 「대량의 데이터의 수를 세고 싶다」라고 하는 경우는 이번의 방법을 추천한다.
그리고, 이유는 후기하지만 「처음부터!」 이 방법으로 하는 것이 좋을지도. .
데이터가 등록되는 시점에 건수 계산
우선, onWrite
트리거를 사용 eventsコレクション
이하를 감시한다.
( onWrite
트리거에 대해서는 여기 에서 자세하게 해설되어 있습니다.)
그리고 만약 데이터가 늘어나면 users/{userId}
에 eventCount 필드가 작성되어 거기에 카운트가 실시간으로 모여 간다.
index.tsimport * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
exports.countEvents = functions.region('asia-northeast1').firestore
.document('users/{userId}/events/{eventId}')
.onWrite((change, context) => {
const userId = context.params.userId;
const FieldValue = admin.firestore.FieldValue;
const countsRef = db.collection('users').doc(userId);
if (!change.before.exists) {
// 登録時に件数をインクリメント
return countsRef.update({ eventCount: FieldValue.increment(1) } );
} else if (change.before.exists && !change.after.exists) {
// 削除時に件数をデクリメント
return countsRef.update({ eventCount: FieldValue.increment(-1) });
}
return;
});
어라? 왜 마이너스에?
위의 이미지, 뭔가 이상한가요?eventCount
가 마이너스가 되어 있는 거야?
있어요! ! !
만약 users/{userId}/events/
이하의 컬렉션에, 이미 50건의 문서가 있었다고 합니다.
새 event(events 이하에 생성되는 {eventId})가 추가되어도, 카운트는 「51」이 아니고, 「1」이 됩니다.
즉, 50개 있는 event(문서)를 3개 삭제하면, eventCount
는 -2가 되는 것입니다.
처음부터 이 카운트 방법으로 해 두면 좋았다~···와 후회하지 않기 위해서도, 처음부터 이 방법으로 카운트합시다. . .
원래 데이터를 포함하여 계산을 시작하려면 어떻게 해야 하나요? 누군가 말해주세요
참고
Reference
이 문제에 관하여(Firebase 요소의 수를 계산하려면 처음부터이 방법으로 가자! (Cloud Functions)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kokogento/items/e4bc6eac6b8501ebcab7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Firestore 컬렉션의 모든 데이터 수를 얻는 방법
여기에서 2개의 카운트 방법이 소개되고 있다.
하지만 「대량의 데이터의 수를 세고 싶다」라고 하는 경우는 이번의 방법을 추천한다.
그리고, 이유는 후기하지만 「처음부터!」 이 방법으로 하는 것이 좋을지도. .
데이터가 등록되는 시점에 건수 계산
우선, onWrite
트리거를 사용 eventsコレクション
이하를 감시한다.
( onWrite
트리거에 대해서는 여기 에서 자세하게 해설되어 있습니다.)
그리고 만약 데이터가 늘어나면 users/{userId}
에 eventCount 필드가 작성되어 거기에 카운트가 실시간으로 모여 간다.
index.tsimport * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
exports.countEvents = functions.region('asia-northeast1').firestore
.document('users/{userId}/events/{eventId}')
.onWrite((change, context) => {
const userId = context.params.userId;
const FieldValue = admin.firestore.FieldValue;
const countsRef = db.collection('users').doc(userId);
if (!change.before.exists) {
// 登録時に件数をインクリメント
return countsRef.update({ eventCount: FieldValue.increment(1) } );
} else if (change.before.exists && !change.after.exists) {
// 削除時に件数をデクリメント
return countsRef.update({ eventCount: FieldValue.increment(-1) });
}
return;
});
어라? 왜 마이너스에?
위의 이미지, 뭔가 이상한가요?eventCount
가 마이너스가 되어 있는 거야?
있어요! ! !
만약 users/{userId}/events/
이하의 컬렉션에, 이미 50건의 문서가 있었다고 합니다.
새 event(events 이하에 생성되는 {eventId})가 추가되어도, 카운트는 「51」이 아니고, 「1」이 됩니다.
즉, 50개 있는 event(문서)를 3개 삭제하면, eventCount
는 -2가 되는 것입니다.
처음부터 이 카운트 방법으로 해 두면 좋았다~···와 후회하지 않기 위해서도, 처음부터 이 방법으로 카운트합시다. . .
원래 데이터를 포함하여 계산을 시작하려면 어떻게 해야 하나요? 누군가 말해주세요
참고
Reference
이 문제에 관하여(Firebase 요소의 수를 계산하려면 처음부터이 방법으로 가자! (Cloud Functions)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kokogento/items/e4bc6eac6b8501ebcab7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
exports.countEvents = functions.region('asia-northeast1').firestore
.document('users/{userId}/events/{eventId}')
.onWrite((change, context) => {
const userId = context.params.userId;
const FieldValue = admin.firestore.FieldValue;
const countsRef = db.collection('users').doc(userId);
if (!change.before.exists) {
// 登録時に件数をインクリメント
return countsRef.update({ eventCount: FieldValue.increment(1) } );
} else if (change.before.exists && !change.after.exists) {
// 削除時に件数をデクリメント
return countsRef.update({ eventCount: FieldValue.increment(-1) });
}
return;
});
위의 이미지, 뭔가 이상한가요?
eventCount
가 마이너스가 되어 있는 거야?있어요! ! !
만약
users/{userId}/events/
이하의 컬렉션에, 이미 50건의 문서가 있었다고 합니다.새 event(events 이하에 생성되는 {eventId})가 추가되어도, 카운트는 「51」이 아니고, 「1」이 됩니다.
즉, 50개 있는 event(문서)를 3개 삭제하면,
eventCount
는 -2가 되는 것입니다.처음부터 이 카운트 방법으로 해 두면 좋았다~···와 후회하지 않기 위해서도, 처음부터 이 방법으로 카운트합시다. . .
원래 데이터를 포함하여 계산을 시작하려면 어떻게 해야 하나요? 누군가 말해주세요
참고
Reference
이 문제에 관하여(Firebase 요소의 수를 계산하려면 처음부터이 방법으로 가자! (Cloud Functions)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kokogento/items/e4bc6eac6b8501ebcab7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Firebase 요소의 수를 계산하려면 처음부터이 방법으로 가자! (Cloud Functions)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kokogento/items/e4bc6eac6b8501ebcab7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)