firebase函数中无法访问全局变量

时间:2017-07-31 09:06:41

标签: javascript firebase

我在index.js(firebase函数)中声明了一个全局数组。部署代码后,将从firebase数据填充此数组。 我有两个函数,在第一个(onTW)我对数组做了一些更改,我只是在另一个函数(onRemoveTW)中显示它。问题是我在第二个函数中得到一个空数组。 这是我的代码。

    var TWArray = [];
    TWRef.once('value', function (snapshot) {
snapshot.forEach(function(childSnapshot) {
    var name=childSnapshot.key;
    var users = {};
    var userNbr = 0;
    TWRef.child(name).child('rm').once('value', function (snapshot2) {
        snapshot2.forEach(function(childSnapshot2) {
            userNbr++;
            if(childSnapshot2.key=='a'){
                users.a = childSnapshot2.val();
            }
            if(childSnapshot2.key=='b'){
                users.b = childSnapshot2.val();
            }
            if(childSnapshot2.key=='c'){
                users.c = childSnapshot2.val();
            }
            if(childSnapshot2.key=='d'){
                users.d = childSnapshot2.val();
            }
        })
        TWArray.push({
            rmName:name,
            users:users,
            userNbr:userNbr
        });
    })

})
    })
    exports.onTW = functions.database
    .ref('/Orders/TW/{requestId}')
    .onWrite(event => {
const userKey = event.data.key;
const post = event.data.val();
 if (post != null) {
    var users={};
            users.a=userKey;
            TWArray.push({
                rmName:userKey,
                users:users,
                userNbr:1
            });
            console.log(TWArray);
            console.log("TWArray.length : "+TWArray.length);
     }
    });
     exports.onRemoveTW = functions.database
     .ref('/Orders/RemoveTW/{requestId}')
    .onWrite(event => {
const userKey = event.data.key;
const post = event.data.val();
if (post != null) {

    console.log("TWArray.length : "+TWArray.length);
}
    })

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用 firebase-functions 时,不能通过写入全局变量来共享函数之间的数据,因为它们是无状态的。因此,不支持此功能。

您可以做的是将数据写入 firebase-database