node.js - 需要一种方法来增加/减少 Firebase 存储中目录中文件的计数器
问题描述
我有一个应用程序可以将文件上传到我的主 Firebase 存储桶中的文件夹中。
它就像/records/{files_here}
- 基本上,我将文件发送到该路径
- Firebase Cloud Functions 将检测到有更改(如果更改是 .onFinalize 或 .onDelete 类型),然后将更新我的 Firestore 中的文档字段。
这在一次发送 1 个文件时非常有效。如果我一次发送超过 2 个文件,计数器开始重叠?例如,上传 3 个文件,但计数器从 0 上升到 4。
这就是我设置函数以增加/减少计数器的方式。
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const db = admin.firestore();
// detects new files on dir records/
exports.uploadedRecordsStorageCreateCounter = functions.storage
.object()
.onFinalize(async (object) => {
let matchDir = "records";
let dir = object.name.substring(0, object.name.lastIndexOf("/"));
if (dir == matchDir) {
await db
.collection("counters")
.doc("records")
.update({ count: admin.firestore.FieldValue.increment(1) });
}
return;
});
// detects deletes on dir records/
exports.uploadedRecordsStorageDeleteCounter = functions.storage
.object()
.onDelete(async (object) => {
let matchDir = "records";
let dir = object.name.substring(0, object.name.lastIndexOf("/"));
if (dir == matchDir) {
await db
.collection("counters")
.doc("records")
.update({ count: admin.firestore.FieldValue.increment(-1) });
}
return;
});
有没有更好的方法来实现计数器?
解决方案
推荐阅读
- react-native - React Native:null 不是对象(评估“NativeMusicControl.STATE_PLAYING”)
- google-cloud-platform - Teradata 中的 dbc.columns 与 BigQuery 中的 INFORMATION_SCHEMA.COLUMNS
- c# - EF Core 异步复杂查询
- macos - MAMP:我应该把 html 文件放在哪里才能让它出现在网络上?
- javascript - 无法从 watchpack-chokidar2:fsevents 访问 NPM CI 错误绑定
- python - “ValueError:blocks[0,:] 的行尺寸不兼容。”拟合管道时
- c# - 带有 MS Bot 作曲家下拉菜单的自定义操作
- electron - 是否可以动态更改电子图标和可见应用程序名称?
- docker - 标签 :latest 不工作 Azure 管道 Docker kubernetes
- python - 如何禁用luigi的时间和日志类型信息