Сохранение данных в событие, я получаю нажимную клавишу. Но проблема при назначении Event_key списка событий {ссылка: Event_key} Firebase База данных реального времени

#javascript #firebase #firebase-realtime-database

#javascript #firebase #firebase-realtime-database

Вопрос:

Я сохранил некоторые данные в разделе «событие» и это местоположение / ключ, которые мне потребовались для ссылки на пользователя. Итак, я попытался сохранить user / eventlist {ссылка: Event_Key}. Но я получил ошибку, а затем даже объединил со строкой — хотя я получил ошибку.

Консоль выводится

 OnSumit Working
Postjobc.js:11 getLocation Working
Postjobc.js:47 Fist Condition Ok : undefined
Postjobc.js:68 0
Postjobc.js:23 Eventinsert Working :-MF0_ZKTuNdiN0QbIjbd    (I get key )
Postjobc.js:18 position Working
logger.ts:115 [2020-08-18T12:41:19.218Z]
@firebase/database:
FIREBASE WARNING: set at /users/userId/eventlist/-MF0_berJy7yKkaZvS-G failed: permission_denied 
  

Правила Firebase

 "rules": {
"users": {
  "$uid": {
    ".read": "$uid === auth.uid",
    ".write": "$uid === auth.uid"
          }
        },
"jobpost":{
  "events":{
    ".read" : "auth.uid != null",
     ".write": "auth.uid != null"
  }
  

База данных в реальном времени

 -https://Project.firebaseio.com/celebrity_program/
   -events

             -MppF9d5aIkhia2u5kka  (Event_key)
    -user   
       -$uid
         
           -eventList
                -Mdhhshhsheuer 
                    eventref : Event_Key
  

Случай 1

 const Eventinsert = () => {
    var EventsId = Firebase.database().ref('events/').push({
        Title: Title,
        Role: Role,
        Location: Location,
        Description: Description,
        SelectionBy: SelectionBy
    })

    var str = EventsId.key;
    var loo = true;
    do {
        if (typeof str !== undefined) {
            console.log(str);                [console output val= -MErnwYwknRZz5MFH ]     
            EventListInsert(str);
            loo = false;
        }
    } while(loo)
  } 

  EventListInsert (Key){
      console.log(key);           [console output : key =-MErnwYwknRZz5MFH ]
        var userId = localStorage.getItem("User");    
         var d = new Date();
        Firebase.database().ref('user/UserId/eventlist/').push({
           event: key,
            latitude: la,
            longitude: lo,
            date: d
      })
     }

  }
  

Я получил ошибку как «Ошибка: ошибка Reference.push: первый аргумент содержит неопределенный в свойстве ‘eventlist.event»

Случай 2

 const Eventinsert = () => {
    var EventsId = Firebase.database().ref('events/').push({
        Title: Title,
        Role: Role,
        Location: Location,
        Description: Description,
        SelectionBy: SelectionBy
    })

    var str = EventsId.key;
    var loo = true;
    do {
        if (typeof str !== undefined) {
            var val= "str"   str;
            console.log(val);                [console output val= str-MErnwYwknRZz5MFH ]     
            EventListInsert(val);
            loo = false;
        }
    } while(loo)
  }
  var userId = localStorage.getItem("User");
  function EventListInsert ( Key ){
      var d = new Date();
        Firebase.database().ref('user/UserId/eventlist/').push({
          
            event: Key,
            latitude: la,
            longitude: lo,
            date: d
      })
     }
  

Я получаю ту же ошибку, что и «Ошибка: ошибка Reference.push: первый аргумент содержит неопределенный в свойстве ‘eventlist.event»

Но если я удалю event: Key, он успешно запустится, Event_List добавится в базу данных. Пользователь должен иметь ссылку на то, что я публикую? Как это решить. Есть ли какой-либо другой способ ref?

Ответ №1:

ошибка указывает на то, что event свойство может быть неопределенным. typeof str !== undefined не определяет, является ли строка неопределенной. Было бы лучше просто проверить, str не является ли это ложным использованием if(str) вместо этого.

Комментарии:

1. У меня был тестовый str, получающий ключ с помощью console.log (str) в EventList () . Я получил ключ.

2. Завершаю работу Postjobc.js: 11 Получаю рабочее местоположение Postjobc.js: 47 Первое условие Ок: не определено Postjobc.js: 68 0 Postjobc.js: 23 вставляю рабочее:-MF0_ZKTuNdiN0QbIjbd Postjobc.js: 18 положение Рабочего регистратора.ts: 115 [2020-08-18T12: 41:19.218Z] @firebase/база данных: ПРЕДУПРЕЖДЕНИЕ FIREBASE: установлено в /users/userId/eventlist/-MF0_berJy7yKkaZvS-G сбой: разрешение отклонено