我正在尝试编写一个云函数,该函数可以执行以下操作:
下面的代码工作良好,直到最后一个部分尝试做的工作。3.错误消息为“函数返回未定义、预期promise或值”。
我认为这是Firebase特有的语法问题。谁能给我指出做这个任务的正确语法吗?
多谢!
exports.commentsupdate = functions.database.ref('posts/{postid}/comments/{commentsid}/')
.onCreate((snapshot,context) => {
const uid=snapshot.val()['uid'];
let username="";
let nickname="";
let profile_picture="";
const ref1=database.ref('users/'+uid);
ref1.once('value',function(ssnapshot){
username=ssnapshot.val()['username'];
nickname=ssnapshot.val()['nickname'];
profile_picture=ssnapshot.val()['profile_picture'];
}).then(()=>{
return snapshot.ref.update({
username:username,
nickname:nickname,
profile_picture:profile_picture
})
})
});
您需要返回promise链中的第一个promise,即once()
方法返回的promise,如下所示:
exports.commentsupdate = functions.database.ref('posts/{postid}/comments/{commentsid}/')
.onCreate((snapshot, context) => {
const uid = snapshot.val()['uid'];
let username = "";
let nickname = "";
let profile_picture = "";
const ref1 = database.ref('users/' + uid);
return ref1.once('value') // <--- Note the return here
.then(snapshot => {
username = snapshot.val()['username'];
nickname = snapshot.val()['nickname'];
profile_picture = snapshot.val()['profile_picture'];
return snapshot.ref.update({
username: username,
nickname: nickname,
profile_picture: profile_picture
})
})
});
实时数据库触发器在写入创建时是排队还是线程化?
有没有办法在触发云功能之前检查用户是否经过Firebase授权?(或在函数内)
我正在寻找一种为Firebase安排云功能的方法,或者换句话说,在特定的时间触发它们。
在我的项目中,我使用实时数据库以及Firestore数据库。当一个文档被添加到Firestore数据库中的特定集合时,我的云函数会触发。然后该函数写入我的实时数据库以更新一些统计信息。我注意到,即使没有用户连接到我的实时数据库,当云函数写入实时数据库时,并发连接的数量也会增加。这是否意味着我的云功能被视为并发连接,并将减少可以同时连接到我的实时数据库的用户数,因为有100k并发连接的限制?
通过这篇博客,我可以看到我的应用程序最好使用Firebase Firestore的Firebase云功能,而不是使用客户端SDK直接访问Firestore。 我可以使用实现Firestore读取操作,使用或&使用方法实现写入操作。所有这些一次性操作都很好。 是否可以实现来获取实时更新?如果是,怎么做?