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