为了账号安全,请及时绑定邮箱和手机立即绑定

Firestore 安全规则无法检索 request.auth.token.name

Firestore 安全规则无法检索 request.auth.token.name

胡子哥哥 2021-08-20 14:32:29
你误解了.indexOf()。indexOf返回可以在数组中找到给定元素的第一个索引,或者-1如果它不存在。inindex的索引也是如此。简而言之,您将对象 ( ) 与数字 ( ) 进行比较。countercounterscounterindex也就是说,它还取决于您在数组中搜索对象的方式。如果尝试查找与某个键/值结构匹配的对象,.indexOf由于您提到的原因将不起作用。正如 Gabriele 所指出的,如果使用参考进行搜索,它将起作用。如果使用引用不是一种选择,作为替代,您可以使用.findIndex(), 或.map(),并根据其属性之一查找对象,例如id.const counters = [{id: 1, value: 0}, {id: 2, value: 0}, {id: 3, value: 0}, {id: 4, value: 0}];const findBySameness = {id: 3, value: 0};const findByRef = counters[2];const indexBySameness = counters.indexOf(findBySameness);console.log('Index by sameness: ', indexBySameness); // Do not find the object indexconst indexByRef = counters.indexOf(findByRef);console.log('Index by reference: ', indexByRef); // Found the object index// If a reference to the object is not available you can use the following methods// With .findIndexconst index3 = counters.findIndex(item => item.id === findBySameness.id)console.log('Index: ', index3); // Found the object index// With .mapconst index2 = counters.map(item => item.id).indexOf(findBySameness.id);console.log('Index: ', index2); // Found the object index
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

我无法直接解决这个问题,但我通过使用 UserID 而不是用户名进行身份验证绕过了这个问题,如下所示:

request.resource.data.uid == request.auth.token.sub

请注意,您的 HelloCollection 查询也应更改,以便将用户 ID 与文本一起存储。


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信