2013-09-04 12 views
5

Güncelleştirme yöntemini kullanarak, firmamın bazı özelliklerini firebase'de güncelliyorum. Güncelleme çağrısının bir parçası olarak, neslimin önceliğini de güncelleyebilir miyim?Firebase güncelleme işlevini de öncelikli olarak güncellemek için kullanabiliriz

Firebase'te saklanan bir nesne koleksiyonum var. Verilerimle etkileşimde bulunmak için Javascript SDK kullanıyorum. Bir nesnenin herhangi bir özelliğini güncellediğimde, nesnenin önceliğini Firebase.ServerValue.TIMESTAMP sabitine ayarlıyorum.

Şimdi, nesnede tanımlanan UpdateOnTimestampTs adlı bir özellikteki her bir nesnenin önceliğini saklamaya başlamak istiyorum. Herhangi bir özelliği güncellediğimde, UpdateOnTimestampTs'i TIMESTAMP sabiti ile de güncelleyeceğim.

Sorun şu ki, güncelleme işlevini öncelikle birlikte çağırmanın bir yolunu bulamıyorum (setWithPriority gibi herhangi bir updateWithPriority yok). Dolayısıyla, UpdateOnTimestampTs ve önceliğini TIMESTAMP sabitini kullanarak iki farklı işlemde güncellerseniz, farklı bir değerle sonuçlanabilir (veya olacak).

Bunu nasıl ele alabilirim?

+0

Verilerin önceliğini çoğaltmanın amacı nedir? Bunun yerine getPriority() 'i iade edilen verilere kullanmamanın bir nedeni var mı? Kullanım durumunuzun ayrıntılarını anlamak burada kısa bir yanıt vermenize yardımcı olacaktır. – Kato

+0

İki nedenden dolayı: 1. Firebase forge önceliği göstermiyor ve bu değeri bilmek istiyoruz. ve 2.Veriyi aşağı çekmek için C# tabanlı orta katmandaki REST API'lerini kullanıyoruz ve yine de verilerin aşağı çekildiğini görmüyoruz. – Kartik

+0

Öncelik verilerini vermek için REST çağrılarınıza "format = export" parametresini sorgu parametresi olarak ekleyebilirsiniz. Ne yazık ki, Firebase'de henüz updateWithPriority işlevi yok. – Anant

cevap

7

Buraya bir cevap vermenin geciktiğini biliyorum, ancak şimdi benzer bir şeye ihtiyaç duyuyorum ve updateWithPriority (Forge'deki öncelikleri kolayca görüntülemenin/düzenlemenin bir yolu yok).

Güncelleştirmeniz için özel olarak adlandırılan anahtar olan .priority'u ekleyebilir ve istenen etkiyi gerçekleştirmesi gerekir.

.priority anahtarı, Firebase REST API belgesinde belgelenmiştir, ancak diğer kitaplıklarda kullanılabilir.

var fb = new Firebase("http://a_firebase.firebaseio.com"); 
var ref = fb.child("/path/to/child"); 
var data = { ".priority": (new Date()).getTime() } //timestamp, as you mentioned 
ref.update(data); 

Güncellemekte yaparken, senin önceliğini değiştirmek istiyorsa: Yalnızca (bunun için setPriority var olduğu,) öncelik güncellemek isterse

Yani, JavaScript, şu çalışacak Eğer sormuştu ne diğer özellikler, sadece güncellemek istediğiniz verileri ile şunlardır:

var fb = new Firebase("http://a_firebase.firebaseio.com"); 
var ref = fb.child("/path/to/child"); 
var data = { 
    "property1": "updated_val", 
    "property2": "updated_val2", 
    ".priority": (new Date()).getTime(), //timestamp, as you mentioned 
} 
ref.update(data); 

DÜZENLEME: açık olmak gerekirse, bu konumda önceliği güncelleyecek numaralı telefonun (ör. /path/to/child) güncellenen bireysel çocukların öncelikleri (yani property1 ve property2'un öncelikleri). Güncellenen çocuklar için bir öncelik eklemek istiyorsanız ve çocuklar yaprak düğümleri (yani, dize, sayı, boole) ise, .value anahtarını .priority anahtarıyla birlikte kullanabilirsiniz.

Aşağıdaki örnek, güncelleştirme kaynaklanmakta olup kök konumuna önceliğini güncellemek için nasıl kullanılacağını gösterir (yani path/to/child) ve güncelleme olan çocuklar (yani property1 ve property2) her ikisi için. Açıkçası, hepsini güncellemek istemediyseniz hangi önceliklerin güncelleneceğini seçerek seçebilirsiniz.

var fb = new Firebase("http://a_firebase.firebaseio.com"); 
var ref = fb.child("/path/to/child"); 
var newPriority = (new Date()).getTime(); //timestamp, as you mentioned 
var data = { 
    "property1": {".value": "updated_val", ".priority": newPriority}, 
    "property2": {".value": "updated_val2", ".priority": newPriority}, 
    ".priority": newPriority 
} 
ref.update(data); 
+0

Yeni Date() ', istemci bilgisayar saatini alır mı? Sonra farklı kullanıcılar istedikleri zaman alabilirler. – tomasbarrios

+0

'new Date()' yeni bir [Javascript Date Object] döndürür (http://www.w3schools.com/jsref/jsref_obj_date.asp) ve 'getTime()', [milisaniye sayısını döndüren bir yöntemdir. 1970/01/01'den beri] (http://www.w3schools.com/jsref/jsref_gettime.asp). Evet, bu, istemci bilgisayarın zamanını döndürür. Sunucu saatini kullanmak istiyorsanız, Firebase'in Firebase sunucuları tarafından geçerli zaman damgasını (Unix döneminden bu yana geçen süre) otomatik olarak doldurması için özel bir yer tutucu kullanılabilir; bkz. [Firebase.ServerValue.TIMESTAMP] (https://www.firebase.com/docs/web/api/servervalue/timestamp.html). – MandM

İlgili konular