0
使用Firebase API从数据库中读取数据会让我在Web用户界面加载后1-2秒内突然发生一些尴尬事情。有没有人有任何替代阅读数据?我试过REST API,但是我仍然需要使用Firebase authlistener,它在我能够检索用户ID并使用REST API之前再次给了我一个延迟。不管我读的数据有多小。检索数据时的Firebase延迟
我会很感激任何超过加载屏幕!下面
使用Firebase API从数据库中读取数据会让我在Web用户界面加载后1-2秒内突然发生一些尴尬事情。有没有人有任何替代阅读数据?我试过REST API,但是我仍然需要使用Firebase authlistener,它在我能够检索用户ID并使用REST API之前再次给了我一个延迟。不管我读的数据有多小。检索数据时的Firebase延迟
我会很感激任何超过加载屏幕!下面
是一个简单的例子来获取你不必等待这一承诺得到解决,打开申购的火力
const app = firebase.initializeApp()
const db = app.database();
let unsub;
const user = new Promise((resolve, reject) => {
unsub = app.onAuthStateChanged(
status => {
if (status === null) {
resolve(app.signInWithEmailAndPassword());
} else resolve(user);
},
err => reject(err);
)
});
user.then(unsub, unsub);
db.ref("path/to/data").on("child_added",() => {});
// this promise will fail if the user is not
// auth
const data = db.ref("path/to/data").once("value");
用户状态。然而,取决于您的应用程序的设置,如果您未通过身份验证,则无法读取数据库。
所以一个解决方案可以非常直接。
随着重构的一点点,我们有:
const getData =() => db.ref("path/to/data").once("value");
user.then(getData).then(data => { /* data here */ });
这最后承诺将有效地只要用户身份验证解决一次当且仅当一切正常。您可以在对用户进行身份验证之前打开订阅,但不能保证更快。打败它的唯一方法是简单地删除首先访问数据库所需的阅读权限...
你好,你能否详细说一点?我在某些项目中使用了Firebase,因此我可能可以帮助您,但我不明白您的要求与网络相关,或者与您实施Firebase订阅的方式有关。 – adz5A
我在寻找的是从firebase数据库中读取数据的更快方式。如果我现在加载我的页面,当前登录用户的用户信息在加载页面后1-2秒内出现。 – kensil