gpt4 book ai didi

javascript - 检索 Firebase 数据并返回它的最佳方式,或其他方式

转载 作者:行者123 更新时间:2023-12-03 10:03:03 26 4
gpt4 key购买 nike

我在一些项目中使用 Firebase,我非常喜欢这个平台。

我偶然发现了一件我做不到的事情,想知道是否有任何方法可以实现它,或者是否有其他方法可以做到。

我想做的是创建一个函数来从我的 Firebase 数据库中检索最后 X 个条目并将数据返回给调用函数。

像这样:

function getTwoLatestLocations()
{
var twoLocations;
myFirebaseRef.limitToLast(2).once('value', function (dataSnapshot) {
twoLocations = dataSnapshot.val();
}, function (errorObject) {
// code to handle read error
console.log("The read failed: " + errorObject.code);
});

return twoLocations;
}

然后这样调用它:

function someCalcutationsWithTheTwoLastLocations()
{
var twoLastLocations = getTwoLatestLocations();
// Do some calculations
}

但是您可能已经猜到,对数据库引用的调用是异步的,因此返回的对象将始终是未定义的。

有没有办法优雅地做到这一点,以便我可以将方法分开?

附言目前我所有的代码都只是在对数据库的调用中。丑。

最佳答案

要将代码分离出来,您需要传入一个回调:

function getTwoLatestLocations(callback)
{
var twoLocations;
myFirebaseRef.limitToLast(2).once('value', function (dataSnapshot) {
twoLocations = dataSnapshot.val();
callback(twoLocations);
}, function (errorObject) {
// code to handle read error
console.log("The read failed: " + errorObject.code);
});

}

然后这样调用它:

function someCalcutationsWithTheTwoLastLocations()
{
getTwoLatestLocations(function(twoLocations) {
// Do some calculations
});
}

永远记住的重要一点是,您不能等待异步加载的内容。

这已被多次提及,包括相关问题列表中的最佳答案:Handling Asynchronous Calls (Firebase) in functions

关于javascript - 检索 Firebase 数据并返回它的最佳方式,或其他方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com