云功能的火力地堡 - 获取数据库值“同步”
问题描述:
我的实时数据库具有这种结构云功能的火力地堡 - 获取数据库值“同步”
- userId1
- meta
- name
- data
- dataId1
- description
- dataId2...
- userId2....
我试图监视增补dataIdx但想要得到的name
场了。我尝试了以下方法,但是滥用了parent
方法。于是我想到了注释掉线,但.once
是异步的,这开始让我的代码更复杂,而在examples有到set
是或多或少同步调用
exports.sendNotification = functions.database.ref('/{userId}/presents/{dataId}')
.onWrite(event => {
var eventSnapshot = event.data;
var person = eventSnapshot.parent().parent().child("meta").child("name").val();
// var person = admin.database().ref('/' + event.params.userId + '/meta/name').once().val();
let p = eventSnapshot.child("description").val();
console.log(`${person} added ${p}`);
什么是正确的办法做到这一点
答
这是我想出了利用链式承诺建立我的数据
exports.sendNotification = functions.database.ref('/{userId}/presents/{presentId}')
.onWrite(event => {
let p = eventSnapshot.child("description").val();
return event.data.ref.parent.parent.child('meta/name').once("value")
.then(snapshot => {
let person = snapshot.val();
var payload = {
data: {
person: person,
...
}
};
['set'](https://firebase.google.com/docs/reference/admin/ node/admin.database.Reference#set)不同步组织单位;它返回一个承诺。只是示例中的调用代码没有等待'set'调用来解决或出错。 – cartant
好吧,我正在尝试基于承诺的解决方案 –