Firebase push() 与 Angularfire $save()

Firebase push() vs Angularfire $save()

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);
            }
        });

两者的 Pros/Cons 和用例是什么?

push/$add 和 set/$save 如何关联

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

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

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

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

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

如果项目没有自然键或者您希望对它们进行排序 "chronologically",您通常会使用 push()/$add() 为您生成一个键.这将确保项目存储在唯一的键下,并且较新的项目显示在列表的后面。

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

的内容