你误解了.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 与文本一起存储。
添加回答
举报
0/150
提交
取消