加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 我应该总是通过$push()将新对象添加到对象列表中吗

发布时间:2020-12-17 17:49:18 所属栏目:安全 来源:网络整理
导读:我正在为Firebase和AngularFire创建一个由用户,帖子和评论组成的数据结构.我的印象是用户的密钥/ ID是用户名,而评论和帖子的密钥/ ID将是自动生成的firebase密钥. 我一直在研究angularfire文档,并且对使用$push()方法时添加到对象的自动生成的键(name())感到
我正在为Firebase和AngularFire创建一个由用户,帖子和评论组成的数据结构.我的印象是用户的密钥/ ID是用户名,而评论和帖子的密钥/ ID将是自动生成的firebase密钥.

我一直在研究angularfire文档,并且对使用$push()方法时添加到对象的自动生成的键(name())感到困惑.

查看firebase网站上的一些示例,我看到Users对象的示例没有自动生成的密钥 – 单个用户的密钥是用户名 – 但同时添加密钥通过$push对数组的对象

我的问题是:

1)我应该一直使用firebase自动生成的密钥吗?如果没有,那么如何添加新用户,因为$push()会自动创建密钥,$set()会重置所有用户?

2)$id和name()之间的关系是什么?

示例数据

从https://www.firebase.com/docs/web/guide/saving-data.html起

文档显示以下Users对象:

{
  "users": {
    "alanisawesome": {
      "date_of_birth": "June 23,1912","full_name": "Alan Turing"
    },"gracehop": { 
      "date_of_birth": "December 9,1906","full_name": "Grace Hopper"
    }
  }
}

如何在不使用$set()重置当前用户或使用push()添加angularfire id的情况下添加更多用户?

然后是一个带有生成id的Posts对象:

{
  "posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "gracehop","title": "Announcing COBOL,a New Programming Language"
    },"-JRHTHaKuITFIhnj02kE": {
      "author": "alanisawesome","title": "The Turing Machine"
    }
  }
}

非常感谢.

解决方法

简短的回答:您可能不希望使用push来存储您的用户.

如果您从其他来源获取密钥,例如Simple Login中的uid,您几乎肯定会想要使用uid在firebase中组织用户及其数据.

这是因为,您的用户正在进行的会话始终为您提供相同的uid,您可以使用该uid查找其用户数据及其内容.

如果您根据已知的用户ID进行设置,则可以在这种情况下安全地使用set,而无需重置所有用户.

但我认为你所得到的是,所以一般来说,你什么时候设置vs推?

典型的博客可能在Firebase中看起来像这样:

{ 
  'users' : {

    // uid from Simple Login,that you used with set()
    'google-1234' : {  
        'displayName' : 'Jane Smith',...
    },...
  },'posts' : {

    // a blog post ID you pick and use for set()
    'blog-post-id-i-use-in-the-url' : { 
      'title' : 'Blog Post Title','contents' : 'Four score and seven...'
     },...
   }
  'postComments' {
    'blog-post-id-i-use-in-the-url' : { 
      // Firebase generated ID done with push()
      '_fe31ca1' : { 

        // uid from simple login (assuming comments require auth)
        'commenterUserId': 'google-5678','commentBody': 'cats back for everyone!'
      } ... other comments ...
    }
  }
}

在此示例中,我们在插入新用户和帖子时使用set,因为我们从其他来源获得了一个很好的唯一ID.这些ID很好,因为它们允许我们稍后根据该ID轻松调用内容.

不过,我们使用推送评论.我们没有来自其他来源的好ID,订单也很重要,因此我们让Firebase为我们生成密钥.这很好用,因为大部分时间我们都在处理与条目相关的注释,所以我们可以根据需要抓取它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读