写入Firebase实时数据库的第二个实例时,获得的权限被拒绝

时间:2018-12-26 17:13:48

标签: javascript firebase firebase-realtime-database firebase-authentication firebase-security-rules

我的离子应用程序使用两个Firebase数据库实例。该规则允许所有人读取数据,但要求用户经过身份验证才能写入数据库。

它可以在主数据库实例上正常工作,但是第二个数据库实例存在问题:从第二个数据库实例读取没有问题,但是向第二个数据库实例进行写入始终会出现public Product findTopProduct() { Map<String, Integer> map = new HashMap<>(); // this map should contain each product name pointing to its quantity across all orders (obj1 -> 10, obj2 -> 15, obj3 -> 4, ...) for (int i=0; i<orders.length; i++) { if(map.containsKey(orders[i].getProductName())) { // if it already exists in map, then you need to add the quantity only and not create a new entry map.put(orders[i].getProductName(), map.get(orders[i].getProductName() + orders[i].getQuantity())); } else { // add the productName maping to its quantity map.put(orders[i].getProductName(), order[i].getQuantity); } } String productName = null; Integer max = null; for(Map.Entry<String, Integer> entry : map.entrySet()) { // loop on map entries if(productName == null && max == null) { // the first iteration they are both null productName = entry.getKey(); max = entry.getValue(); continue; } if(entry.getValue() > max) { // maximize max = entry.getValue(); productName = entry.getKey(); } } Product product = new Product(productName, max); return product; } 错误。

如果我更改规则以允许所有人编写,则第二个数据库实例也将正常工作。这是我的规则:

Permission Denied

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。根据规则,这两个数据库实例都需要用户进行身份验证才能具有写访问权限。由于每个数据库仅配置/连接了一个应用程序,因此我最终在应用程序中使用了“两个应用程序”。添加此新数据库实例后,如果用户需要对两个数据库实例进行写访问,则除了默认应用程序外,我还应该更改代码以对第二个应用程序进行身份验证。