gpt4 book ai didi

firebase - Firebase 的云函数 : write to database on fileupload

转载 作者:行者123 更新时间:2023-12-02 19:22:39 24 4
gpt4 key购买 nike

我有一个云函数(generateThumbnail示例函数的修改版本)。我想创建缩略图,但我还想获取图像的宽度和高度,并更新数据库中的大小值。

要解决这个问题:

  1. 我需要获取当前数据库的快照
  2. 导航至数据库的 /projects
  3. 使用文件名查找正确的 key (project.src == fileName)
  4. 获取图像大小(完成)
  5. project.size 更新为新值

我做了一些研究,但我只找到了 functions.database.DeltaSnapshot 接口(interface),当你监听 functions.database().ref().onwrite(快照 => {})

projects.json:

[{
"name": "lolipop",
"src": "lolipop.jpg",
"size": ""
},{
"name": "cookie",
"src": "cookie.jpg",
"size": ""
}]

最佳答案

可以使用 firebase-admin 完成数据库交互包裹。查看this sample查看不是由数据库写入触发的函数如何访问数据库。

在 Firebase 中通过子节点的键之一的值访问子节点有点笨拙,最后会详细介绍。

对于每个问题:

1 和 2:创建对数据库中的项目键的引用

3:通过src键找到您要查找的项目

5:Update项目

// create reference
const projectsRef = admin.database().ref('projects');

// create query
const srcProjectQuery = projectsRef.orderByChild('src').equalTo(fileName);

// read objects that fit the query
return srcPojectQuery.once('value').then(snapshot => {
const updates = {};

snapshot.forEach(childSnapshot => {
updates[`${childSnapshot.key}/size`] = fileSize;
});

return projectsRef.update(updates);
});

由于看起来您将 src 值视为唯一,因此通过使用 src 作为每个项目对象的键可以避免很多麻烦。这会将事情简化为:

const projectsRef = admin.database().ref(`projects/${src}`);
projectsRef.update({'size': fileSize});

关于firebase - Firebase 的云函数 : write to database on fileupload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com