【发布时间】:2019-05-15 04:20:24
【问题描述】:
我正在尝试为 12 月不推荐使用 v2 firebase 时准备一些旧应用程序。 18. Firebase 电子邮件说只有身份验证将被弃用,但由于安全规则,我的 AngularFire 功能似乎也无法正常工作。例如 -
$firebaseArray(ref.child('data').child('stuff')); <- used to work no problem
但是现在 (v3) 它说它无权访问该数据。
这些是 Firebase 规则 -
$company:{
".read": "root.child('users').child(auth.uid).child('company').val() == $company || root.child('users').child(auth.uid).child('company').val() == 'COMPANY'",
但是,如果我只是将读取和写入都设置为 TRUE,它会再次起作用。
$company: {
".read": "true",
".write": "true"
}
$firebaseArray 可以工作,但它以以前没有的方式被安全规则绊倒了。关于如何调整规则以使其按应有的方式运行的任何想法?
现在,如果我使用 v3 快照方法访问数据,它就可以工作了!但现在它没有与数据同步,它只是那个特定时刻的快照。我使用 $firebaseArray 和 $firebaseObject 的原因是它会与数据库上的任何更改同步。
firebase.database().ref('/stuff').once('value').then(function(snapshot) {
console.log('it worked!');
});
谢谢!
******************新编辑********************* 18 年 12 月 14 日
firebase.initializeApp({
apiKey: APIKEY,
databaseURL: FIREBASE_URL, // Realtime Database
});
var stuffRef = firebase.database().ref().child('stuff');
var dataMaster = $firebaseObject(stuffRef);
我收到此错误 - ref.ref 不是函数
我做错了什么??谢谢!
【问题讨论】:
-
12月18日唯一改变的是旧的身份验证端点停止工作,安全规则的解释没有改变,12月18日也不会改变。---我写了为什么最后一个 sn-p 只触发一次,但不知道为什么您会看到您描述的其他更改。也很难将代码(访问
/stuff)映射到您共享的规则(控制对JSON 中某处$company的访问)。请确保您的问题包含您正在寻求帮助的minimal, standalone, reproduction of the problem。 -
嘿@FrankvanPuffelen - 感谢您的回复。请检查我在问题中的编辑,以了解我解决的具体问题。谢谢!
-
您使用的 AngularFire 版本似乎与您使用的 Firebase SDK 不兼容。
-
@FrankvanPuffelen 您说得对,先生。该应用程序从 2015 年开始在 Angular Fire 1.1.2 上运行。我将它升级到 2.3,它现在看起来可以工作了。
-
很高兴听到。我也用这些信息更新了我的答案。
标签: javascript firebase firebase-realtime-database angularfire firebase-security