根據Angularfire文檔,當使用通過$asObject()
返回的對象時,可以通過在對象上定義$priority
屬性來設置該對象的優先級,然後使用$save()
。
我的代碼效果很好,但$priority
沒有做任何事情。下面是一些代碼完全解釋的評論:
app.factory('MyService', function($rootScope, $firebase) {
// The complete Firebase url
var ref = *obfuscated*;
// Returning the dataset as an object containing objects
var data = $firebase(ref).$asObject;
// This object is what's returned by MyService
var Data = {
// Method to create a new object within the data set,
// keyed by myId. Attempting to set priority for the
// record via $priority. returnData.uid is a valid string.
create: function(returnData, myId) {
data[myId] = {
myId: myId,
$priority: returnData.uid
};
// No need to explain the stuff between here and the
// $rootScope listener below, just added for context
data.$save().then(function() {
setMyId(myId);
});
},
findByMyId: function(myId) {
if (myId) {
return data[myId];
}
}
};
function setMyId(myId) {
$rootScope.myId = User.findByMyId(myId);
}
// This event listener works fine, fires
// at user login and returns data
$rootScope.$on('$firebaseSimpleLogin:login', function(e, returnData) {
// returnData.uid has the correct value - this
// function should return the object(aka record) with
// a priority matching returnData.uid
var query = $firebase(ref.startAt(returnData.uid).endAt(returnData.uid)).$asObject();
// console shows an object with the normal $firebase
// properties, but no records. If I define query without
// limiting the set ($firebase(ref).$asObject()), it returns
// the full set just fine. The priority on all records is still
// null.
console.log(query);
query.$loaded(function() {
setData(query.myId);
});
});
return Data;
});
是的,我下面Thinkster.io的教程,我在第7章不,這不是關於章其他問題重複,我已經找到了他們示例中的Angularfire 0.8之前版本的代碼,只是無法設置$ priority,至今我花了大約5個小時試圖通過我自己的努力和網絡找到解決方案。
任何接受者?
您不能在對象的子節點上使用$ priority;你可以在根級上設置;這與Firebase.set/setWithPriority行爲相同。你正在尋找$ asArray(),這將允許你管理一個有序的集合。 – Kato 2014-09-04 23:10:37
@Kato Man - 你如何從文檔中知道?這是門票,但謝謝你的迴應。如果你添加這個答案,我會標記它。我相信其他人將會尋找這個信息。 – 2014-09-05 00:37:38
如果您意識到優先級(至少在邏輯上)作爲屬性本身進行存儲,則可能會有所幫助。所以你只能給一個對象/非葉節點添加一個優先級,而不是一個屬性本身。 – 2014-09-05 01:06:27