Я пытаюсь создать распределенный счетчик через транзакцию Firestore. У меня есть коллекция сообщений, каждая с подколлекцией "count_shards". Каждый из них имеет три документа (1, 2, 3), которые содержат поле «count».
Когда я создаю «похожий» документ для публикации, я хочу выбрать случайный документ и увеличить его на 1. У меня есть следующий код Typescript:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
exports.addShard = functions.firestore
.document(`likes/{docID}`)
.onCreate(async (snap, context) => {
const postID: string = snap.data().postID;
const randNum: number = (Math.floor(Math.random()*3+1));
const postRef = admin.firestore().doc(`post/${postID}/count_shards/${randNum}`);
admin.firestore().runTransaction(async transaction => {
const postShard = (await transaction.get(postRef)).data();
postShard.count += 1;
return transaction.update(postRef, postShard);
});
});
Я получаю следующие сообщения об ошибках:
«ОШИБКА: /Users//firecast/functions/src/index.ts[13, 9]: обещания должны обрабатываться соответствующим образом»
"functions @ lint: tslint --project tsconfig.json
"
Кто-нибудь знает, что я здесь не так делаю?