我有一个云功能(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": ""
}]
答案 0 :(得分:5)
可以使用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});