如何在Angularfire中设置优先级

时间:2014-11-25 23:09:41

标签: angularfire

我无法理解如何在angularfire中设置$优先级。我正在尝试使用密钥作为用户名添加用户名。

例如,如果我尝试:

var object = {user : "name",
      $priority : "this"};

    var ref =  new Firebase(FIREBASE_URL + 'users');
  var newBar = $firebase(ref);
          newBar.$set(username, object);

由于无效字符" $" firebase集失败优先考虑。

我明白我可以试试:

var object = {user : "name",
      $priority : "this"};

    var ref =  new Firebase(FIREBASE_URL + 'users');
  var newBar = $firebase(ref).$asArray();
          newBar.$add(object);

这成功地将对象添加到数组中,但是并没有让我有机会根据需要将密钥设置为用户名。

我无法想到目前实现这一目标的任何其他方法。有没有办法使用允许我设置$ priority的set?或者任何替代方法来实现同样的目标?

由于

2 个答案:

答案 0 :(得分:1)

$priority是存在于同步对象和同步数组内的记录上的属性。正如您所指出的,它不是firebase数据中的允许键,因此将其与$firebase::$set一起使用在这里没有意义(因为$ set采用存储的有效json对象)直接进入Firebase)。阅读API规范对此非常有帮助。

也无需为此用例创建同步绑定。只需使用现有的Firebase参考:

var ref =  new Firebase(URL);
ref.child(username).set(object, function(error){ /* ... */ });

如果在同步绑定中有一些用例,那么只需使用Firebase元属性.priority

var object = {user: "name", ".priority": "this"};
var ref = new Firebase(URL);
var sync = $firebase(ref);
sync.$set(object).then(/* ... */);

答案 1 :(得分:0)

如果其他人正在考虑这个问题,我现在采取先使用set的方法然后再设置优先级,如下所示:

var object = {user : "name",
  $priority : "this"};
var username = "user1";
var ref =  new Firebase(FIREBASE_URL + 'users');
  var newBar = $firebase(ref);
          newBar.$set(username, object).then(function(){
               var ref2 =  new Firebase(FIREBASE_URL + 'users/' + username);
                var newBar2 = $firebase(ref2).$asObject();
                newBar2.$loaded().then(function(){
                    newBar2.$priority = authUser.uid;
              newBar2.$save();
                });

          });