问题标签 [angularfire]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firebase - 使用 AngularFire 中的记录进行基本用户身份验证
花了几天时间尝试不同的、各种推荐的方法来做到这一点,我已经找到了我认为最简单和最有希望的方法。还要感谢来自这个 SO 问题的好心人:Get the index ID of an item in Firebase AngularFire
当前设置
用户可以使用电子邮件和社交网络登录,因此当他们创建记录时,会将其保存userId
为一种外键。
目前很好。但我想创建一个规则,所以twitter2934392
无法读取facebook63203497
的记录。
关闭安全面板
匹配后端的 ID
不幸的是,文档与方法不一致,firebase 用户 ID 每个提供商(facebook、twitter、密码)都是唯一的,这建议将社交网络附加到 ID。文档希望您为每个登录方法的 id 创建不同的规则。为什么使用 >1 登录方法的任何人都想这样做,这超出了我的理解。
(来自:https ://www.firebase.com/docs/security/rule-expressions/auth.html )
因此,我将尝试将连接auth.provider
的 with 与相应项目auth.id
的记录相匹配。userId
registry
根据 API,这应该像
在我的情况下,当然使用$registry
而不是$user
。
但这不起作用,因为(参见上面的第一张图片),AngularFire 将每条记录设置在一个索引值下。在上图中,它是0
. 这就是事情变得复杂的地方。
此外,我无法在模拟器中测试任何东西,因为我无法编辑{some: 'json'}
甚至进行身份验证。输入框拒绝任何输入。
我最好的猜测如下。
这既会引发身份验证错误,又会同时向所有用户授予完全读取权限。我正在失去理智。我应该在这里做什么?
firebase - 防止范围内的项目写入其他用户的记录
在我的应用程序中有一个用户的情况下,我成功地使用了 AngularFire。
现在我已经启动并运行了身份验证,我注意到在切换用户时分配items
给$scope.items
是灾难性的,主要是由于$scope
未能正确更新。
直接从文档中读取...
我需要这些只是items
当前授权用户的。所以目前,我这样做(如果有更好的方法,请不要犹豫告诉我!)
我userId
使用auth.provider
and生成auth.id
,顺便说一句。现在我的项目被命名为(假设)user1
我将项目添加到$scope.items
问题
现在,如果我只是注销并以其他人身份登录,那么该用户神奇地拥有eenie meenie miney
并且moe
因为$scope.items
在注销和登录之间持有数组。
我试图设置$scope.items = []
注销事件,但这实际上清空了所有记录。我正在拔头发。这是我在项目中需要做的 0.001%,这需要我整个周末。
更新新方法
它现在将准确地在用户的 id 下创建项目。但是,一旦您注销并重新登录,这些项目仍不会从$scope.devices
. 因此,他们只是将自己添加到数据中,但在新登录的用户下。
更新
我做了很多试验和错误。我可能会以各种可能的组合设置$scope.devices
并[]
移动登录事件。最终起作用的是@hiattp 在接受的答案中的小提琴。
angularjs - 任何深入的 AngularFire 身份验证和授权教程?
有许多与 AngularFire 身份验证相关的有用问题。
在 AngularFire 中使用记录进行基本用户身份验证对于初学者来说是一个不错的选择。
Anant Narayanan 的演示文稿结合 https://github.com/anantn/firetube上的代码也有很多很好的预告信息。
阅读 angularfire.com 上的文档是嗯,AngularFire 种子很有帮助..
不幸的是,我仍然觉得我带着几张旅游信息亭地图在异国他乡徘徊。请就 Angular + Firebase 的土地和文化提出任何直接且完整的介绍或教程?更具体地说,是以某种有意义的方式将内容与经过身份验证的用户联系起来的内容。
firebase - 将 angularFire 与纯 firebase js 结合使用
我很困惑为什么我们必须使用angularFireCollection
诸如 etc 之类的内置方法add() update() remove()
而不是直接使用 firebase js api。
因为我们只想用 angularJS 绑定 firebase 节点。angularFireCollection(nodeRef)
如果我们想对绑定节点做一些事情,我们可以使用
then。
我们可以回到 firebase js api 并使用节点做一些事情。例子
nodeRef.push() .update() .remove()
.
对我来说,这比使用angularFireCollection().methods()
. 因为
- 与firebase js api相比,angularCollection未完成
- 我不必再学习/知道 ngFire 是如何工作的,因为我已经在 firebase 中学习过
- 不同的方法名称让我感到困惑。
angularFireCollection().add()
对比new Firebase().push()
firebase - 如何使用具有随机子 ID 的 FirebaseIndex
我有这个节点,参考子节点有 randomID。
我想循环ref
和它refToMaster
。如何使用 FirebaseIndex 进行查询?
new FirebaseIndex(ref.child(STUCK_HERE), master);
更新
我将节点结构更新为 hiattp 和 kato 提到的内容。
对不起,我不清楚的问题,我重新编辑这个。实际上,我想同时检索ref.abc
和ref.efg
检索它们的相关主数据,它们是123
和456
以下是我尝试过的。
angularjs - 为什么 AngularFire 聊天示例会中断?
作为练习,我正在向基本的 angularFire 聊天应用程序添加电子邮件身份验证,如http://angularfire.com/tutorial/所示。在这个过程中,我注意到通过伪造删除第一个条目,一个未定义的条目出现在 DOM 中,该条目曾经是 0 条目。
当我删除第二个(id 1)条目时,由于以下错误消息没有显示任何内容: 不允许在转发器中重复。中继器:消息中的消息键:未定义:未定义
我注意到教程中出现了第一个未定义的代码,但不是第二个......直到我将 .firebaseio-demo.com url 替换为我的 firebase 的那个。这让我相信这不是我对代码的实现。
我想念的 .firebaseio-demo.com 的烟雾和镜子背后是什么?是否有神秘的验证规则或什么?
在某些时候,angularjs.org 上的 Wire up a Backend 示例遇到了同样的问题。最近它似乎已得到纠正。
angularjs - 即使使用 VALID 路由,如何自动停止角度重定向到默认页面(使用 else 方法定义)
我正在发送一封包含邀请链接的电子邮件,但我在使用电子邮件中附加的链接时遇到问题,类似于myapp.com/#/invitation/J5QSXr9/token/J6ixelV3
. 当我点击它时,它总是自动重定向到我myapp.com/#/login
不想要的默认页面。真正奇怪的是,当我点击浏览器时,它会正确显示网页。我在路由提供者中定义的是:
您会注意到我正在使用 angular$routeProvider
来执行此操作,并且我正在使用 Firebase 和 angularFire,并且为了进行我正在使用的身份验证angularFireAuth
(就像 Anant 在此处描述的那样)。所以路由/invitation/:todosId/token/:tokenNum
不应该要求身份验证,请注意我设置authRequired:false
了任何人都可以访问它,但它不断重定向到/login
. 看起来很奇怪的是浏览器历史记录显示页面,所以当我点击浏览器时,页面显示并正常工作。
任何想法为什么会发生这种情况?
angularfire - angularFire没有绑定到对象
我正在尝试写入 firebase 中的一个对象,我是这样做的:
问题是 $scope.newUser 未定义。
这是为什么?
firebase - 使用 angularfire/collection 同步相关数据
我想使用 angularfirecollection 与数据列表保持单向同步。该结构是具有各种属性的“事物”列表(例如“喜欢”)和每个持有“事物”键子集的用户(例如 -jsdzsdrestofkey: true)。ü
唱 angularfirecollection(或 firebase native 'on'),我可以同步特定用户拥有的所有东西......我还可以抓取(使用 firebase native 'once')每个 'thing' 的属性来显示。
但是,在 Angular 中,我需要使用 $apply() 将属性数据注入到用户“事物”列表中每个项目的范围内。为了保持同步,我想我可以使用 firebase 的 on change 事件……但这一切都需要我为用户列表中的每个事物创建新的引用。
在保持列表和关系数据同步的同时,在 firebase 中获取关系数据的最佳方法是什么?
谢谢!伊尔凡
image - 使用 AngularFire 将图像数组添加到 Firebase
我试图让用户上传图片,然后将图片以base64编码存储在firebase中。我正在尝试使我的 Firebase 结构如下:
- |--饲料
- |----饲料项目
- |------用户名
- |--------史诗
- |---------姓名等
- |--------图片
- |---------图片1、图片2等
但是,我无法获取 firebase 中的远程数据来镜像客户端中的本地数据。当我将图像数组打印到客户端的控制台时,它显示上传的图像已添加到图像数组中......但这些图像永远不会进入 firebase。我尝试了多种方法都无济于事。我尝试使用隐式同步、显式同步以及两者的混合。我一生都无法弄清楚为什么这不起作用,我感到非常沮丧。这是我的代码:
编辑:想通了,必须连接到“ https://myfirebaseurl.com/feed/ ” + 添加 + “/images”