Akx*_*kxe 2 firebase firebase-realtime-database google-cloud-functions firebase-storage
我有一个云功能(generateThumbnail样本函数的修改版本).我想创建缩略图,但我还想获得图像宽度和高度,并更新数据库中的大小值.
要解决这个问题:
/projects数据库project.size为新值我做了一些研究,但是functions.database.DeltaSnapshot当你听的时候我只找到了给出的界面functions.database().ref().onwrite(snapshot => {})
projects.json:
[{
"name": "lolipop",
"src": "lolipop.jpg",
"size": ""
},{
"name": "cookie",
"src": "cookie.jpg",
"size": ""
}]
Run Code Online (Sandbox Code Playgroud)
可以使用firebase-admin包完成数据库交互.查看此示例以查看数据库写入未触发的函数如何访问数据库.
通过Firebase中其中一个键的值访问子节点有点笨拙,最后更多.
对于每个问题:
1&2:创建对数据库中项目键的引用
3:通过src密钥找到您正在寻找的项目
5:更新项目
// 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);
});
Run Code Online (Sandbox Code Playgroud)
由于看起来您将src值视为唯一,因此使用src每个项目对象的键作为关键可以避免很多麻烦.这会简化以下事情:
const projectsRef = admin.database().ref(`projects/${src}`);
projectsRef.update({'size': fileSize});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |