【问题标题】:trouble adding a friend to the database (React/Firebase) -- "TypeError: Friends.push is not a function"将朋友添加到数据库时遇到问题(React/Firebase)——“TypeError:Friends.push 不是函数”
【发布时间】:2020-04-30 04:17:18
【问题描述】:

提前非常感谢您的帮助。基本上,我正在尝试编写允许用户将朋友添加到他们的“朋友列表”的代码。

这是我现在的 addFriend 函数:

export function addFriend(userID, friendID) {

  ourDB.ref(`users/${userID}/Friends`).on('value', (snapshot) => {
    var Friends = snapshot.val();

    console.log(userID)
    console.log("what up")
    console.log("type" + typeof Friends)
    console.log(Friends)
    //console.log(typeof Friends)
    //console.log(Friends.Friends)


    if(Friends && Friends.Friends){
      Friends.Friends.push(friendID);
    }
    else {
      Friends = {Friends: [friendID]}
    }

    ourDB.ref(`users/${userID}`).child('Friends').set({
          Friends
    })
  });

不幸的是,当我从 Friends.push 开始纱线时,该功能出错。我收到消息:“TypeError:Friends.Friends.push 不是函数”

我不太确定为什么会发生这种情况,但基本上 typeof Friends 是对象并包含 {Friends: Array(1)} 一个我硬编码的朋友。

另外,这里是控制台的输出:

G7dCfxkE6rSt3RoZMmt4bpCt6rS2(当前用户ID/我登录的ID) 怎么了 类型对象 {朋友:数组(1)}

非常感谢!!

【问题讨论】:

  • 这能回答你的问题吗? Uncaught TypeError: data.push is not a function
  • 我相信您将Friends 实例化为快照的值,它可能是也可能不是数组,对吗?您是否尝试过在空检查中将条件更改为if ( Friends !== null && Array.isArray(Friends) )
  • 嗨!非常感谢乔尔——我试过了,但它不允许我再进入页面

标签: javascript reactjs firebase firebase-realtime-database


【解决方案1】:

根据您的控制台输出,Friends 是一个对象,它有一个名为 Friends 的键,其中包含一个数组。

if(Friends && Friends.Friends){
  Friends.Friends.push(friendID);
}
else {
  Friends = {Friends: [friendID]}
}

另外,在你的 else 块中,分配内部键对象

【讨论】:

  • 嗨,对不起,现在它说 TypeError: Friends.Friends.push is not a function... 你知道如何解决这个问题吗?谢谢!
  • 您能否在控制台记录以下内容并显示 - console.log('Friends', Friends) .. console.log('Friends.Friends', Friends.Friends)
  • 它说 Friends.Friends Object // Friends: ["a0uL79bAGfQuexUqxTxo7M34qgt1"] // proto: Object // 谢谢!!
  • Friends => {Friends: {…}} => Friends: {Friends: Array(1)} proto: Object // Friends.Friends => {Friends: Array(1)} => {Friends: Array(1)} => Friends: ["a0uL79bAGfQuexUqxTxo7M34qgt1"] proto: Object
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2021-03-24
  • 2019-03-18
  • 2017-11-19
  • 2022-07-19
相关资源
最近更新 更多