首页 > 解决方案 > Firebase 处理异步函数

问题描述

我有一个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 值的函数是异步运行的。但是,我想不出一种方法来转换此实现,使其按我想要的方式工作。任何帮助,将不胜感激。

标签: javascriptfirebasefirebase-realtime-databasegoogle-cloud-functions

解决方案


您可以链接一个新的 .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);
    });
});

推荐阅读