【问题标题】:Firebase push() vs Angularfire $save()Firebase push() 与 Angularfire $save()
【发布时间】:2016-06-27 13:13:04
【问题描述】:

angularfire .$save() 与 firebase .push() 相比如何?我知道 push() 将在存储数据时生成一个唯一键,但我无法使用 angularfire 重新创建该行为。有没有办法或者我应该使用 .push() 如果是这样,在什么情况下你会使用 $save()?

这是我使用 $save() 的一个示例...

        var fb = new Firebase(FIREBASE_URI).child('Test');
        var article = $firebaseObject(fb);

        article.Foo = "bar";
        article.$save().then(function(fb) {
            console.log(fb.key() === article.$id); // true
        }, function(error) {
            console.log("Error:", error);
        });

另一个使用 .push()...

        var article = new Firebase(FIREBASE_URI).child('Articles');

        article.push({
            title:   $scope.article.title,
            post:    $scope.article.post
        }, function(error) {
            if (error) {
                console.log("Error:", error);
            }
        });

两者的优点/缺点和用例是什么?

【问题讨论】:

    标签: javascript angularjs firebase angularfire


    【解决方案1】:

    push/$add 和 set/$save 的关系

    AngularFire 的 $save() 方法是使用 Firebase 的 set() 方法实现的。两者都将数据保存到现有/已知位置。

    Firebase 的 push() 操作对应于 AngularFire 的 $add() 方法。两者都将生成一个新的唯一子密钥,这意味着您可以使用它们在保证不会与任何现有数据冲突的位置添加新数据。

    什么时候用push,什么时候用set

    虽然以上是一个硬道理,但这一点更主观。所以不要盲目地复制它,而要弄清楚它如何适用于你的情况。

    如果您有一个已存在于数据库中的对象,如果您正在使用具有自然键的对象,通常应该使用set()/$save()

    如果项目没有自然键或者您希望它们按“时间顺序”排序,您通常会使用push()/$add() 为您生成一个键。这将确保项目存储在唯一键下,并且更新的项目显示在列表的后面。

    因此,如果您与用户合作,您通常会使用ref.child('users').child(user.uid).set(user) 之类的方式将其存储在他们的uid 下。另一方面,如果您要向聊天室添加聊天消息,您将使用 ref.child('chat').push({ name: 'Adam Youngers', 'Firebase push() vs Angularfire $save()' }) 之类的内容。

    【讨论】:

    • 很好的答案。您能否解释一下在 Angular 应用程序中使用 Angular Fire 与仅使用 Firebase 的内置方法有什么好处?
    • AngularFire 有助于将 Firebase 数据绑定到 AngularJS 视图。它处理的重要任务是在数据发生更改时通知 AngularJS,以便它可以更新视图。在发送更新的方式上,我个人不喜欢直接使用 AngularFire 或 JavaScript 方法。幸运的是,这两者完美地互操作,所以你可以选择你喜欢的。
    • 在类似的说明中,您可以在Saving structured data in firebase with angular上提供任何反馈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2016-10-30
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多