0

У меня есть массив, содержащий некоторые объекты. Пользователь должен иметь возможность вызывать все объекты через moduls/ и определенный через moduls/$id. Но когда нет модуля, база данных должна возвращать ошибку, чтобы клиент знал, что ничего нет.Ошибка возврата, если запись не найдена в базе данных firebase

возвращается не ошибка, когда Modul не существует:

"moduls": { 
    ".read": "true", 
    "$modul": { 

    } 
} 

возвращает ошибку, когда данные не существует, но дает ошибку, когда я хочу, чтобы получить все МОДУЛИ:

"moduls": { 
    "$modul": { 
     ".read": "data.exists()", 
    } 
} 

Так существует способ решить оба случая или лучше проверить с клиентом, если установлено определенное значение:

if(typeof modul.name === "undefined") { 
    //modul not found 
} 

ответ

0

Вы, похоже, хотите использовать правила безопасности для управления клиентской логикой. Это, скорее всего, даст больше проблем, чем того стоит. Вместо этого используйте код на стороне клиента для управления логикой на стороне клиента и правилами безопасности, которые гарантируют, что ваши бизнес-правила не будут нарушены.

Если вы можете перефразировать свою бизнес-логику во что-то, что соответствует этим правилам, вам будет намного легче. Например, «любой пользователь может создать объект, но как только он будет создан, никто не может перезаписать», становится:

"moduls": { 
    "$modulId": { 
    ".write": "!data.exists() && newData.exists()", 
    } 
} 

И на стороне клиента:

function createModul(modulId) { 
    var modulRef = ref.child('moduls').child(modulId); 
    modulRef.once('value', function(snapshot) { 
    if (snapshot.exists()) { 
     console.error('Modul with '+modulId+' already exists); 
    } 
    else { 
     modulRef.set('My new value', function(error) { 
     if (error) { 
      console.error('Write failed, probably somebody created '+modulId+' in the meantime') 
     } 
     }); 
    } 
    } 
} 

Теперь клиент проверяет свою собственную бизнес-логика, и сервер гарантирует, что он не может быть нарушен.

Смежные вопросы