首页 > 解决方案 > 数据保存到事件我得到 Push key 。但是 Event_key 分配 EventList { ref : Event_key } Firebase 实时数据库时出现问题

问题描述

我在事件下保存了一些数据以及用户参考所需的位置/密钥。所以我试图保存用户/事件列表 { ref : 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_List 添加到数据库。用户需要参考我的帖子?如何解决这个问题。还有其他方法可以参考吗?

标签: javascriptfirebasefirebase-realtime-database

解决方案


该错误表明该event属性可能未定义。typeof str !== undefined不确定字符串是否未定义。最好只测试它是否str不是假的if(str)


推荐阅读