使用Firebase API从数据库中读取数据给我一个尴尬的时刻,在Web UI加载后1-2秒突然出现。有没有人有阅读数据的替代方案?我已经尝试过REST API,但我仍然需要使用Firebase authlistener,它再次让我延迟,然后才能检索用户ID并使用REST API。我读的数据有多小并不重要。
我会在加载屏幕上欣赏任何内容!
答案 0 :(得分:0)
是一个在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 */ });
当且仅当一切正常时,用户一次授权即可有效解决此最后一个承诺。您可以在对用户进行身份验证之前打开订阅,但不能保证更快。击败它的唯一方法是首先删除访问数据库所需的阅读权限......