【发布时间】:2019-07-27 15:30:33
【问题描述】:
我正在尝试通过 Firestore 事务创建分布式计数器。我有一个帖子集合,每个帖子都有一个“count_shards”的子集合。它们每个都有三个包含“计数”字段的文档(1、2、3)。
当我为帖子创建“喜欢”文档时,我想选择一个随机文档并将其递增 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"
有人知道我在这里做错了什么吗?
【问题讨论】:
标签: typescript google-cloud-firestore google-cloud-functions