我无法理解如何在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?或者任何替代方法来实现同样的目标?
由于
答案 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();
});
});