Firebase句柄异步功能

时间:2018-07-04 04:04:25

标签: javascript firebase firebase-realtime-database google-cloud-functions

我有一个firebase函数,其功能如下:

exports.myFunction = functions.database.ref('/users/{id}/').onWrite((snapshot, context) => {

//do some processing here

var number;
snapshot.after.ref.parent.once('value').then((newSnapshot) => {
    number = newSnapshot.child('number').val();
});
console.log(number);

//do some processing with the use of var number

//returning the updates after processing
return snapshot.after.ref.update(updates);
});

我意识到,由于我用来获取number值的函数是异步运行的,因此变量number即将变得不确定。但是,我无法想到一种方法来转换此实现,以便它按我想要的方式工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以链接一个新的.then()以对此编号执行处理。例如:

exports.myFunction = functions.database.ref('/users/{id}/').onWrite((snapshot, context) => {

...
var number;
return snapshot.after.ref.parent.once('value').then((newSnapshot) => {
        number = newSnapshot.child('number').val();
    }).then((number) => {
        console.log(number);
        //do some processing with the use of var number
        snapshot.after.ref.update(updates);
    });
});