我在一些项目中使用 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
}
但正如您可能已经猜到,对数据库引用的调用是异步的,因此返回的对象将始终是未定义的。
有没有办法优雅地做到这一点,这样我就可以将方法分开?
PS 目前我所有的代码都只是在对数据库的调用中。丑陋的。