Bu Meteor kodu, bir şablonda headerLabel
üzerinde bir ileti görüntüler, sunucu ve/veya istemci, iletiyi HeaderLabelCol
mongo koleksiyonuna yeni bir ileti ekleyerek değiştirir ve istemci şablonunun en son yayımlanmasından bu yana değişmesini bekler. eklenen belgeMeteor reaktif yayımlama
İstemci tarayıcısını kullanarak yeni bir ileti ekleyebildim, ancak sayfayı yeniledikten sonra, reaktif zincirinin bir yerde kırıldığını belirten sayfayı göstermedim. Sorun nedir? Nasıl düzeltilebilir? Teşekkür
//client.js
Template.header.helpers({
headerLabel: function() {
return HeaderLabelCol.findOne() ? HeaderLabelCol.findOne().headerLabel : 'Make a selection';
}
});
//server.js
HeaderLabelCol = new Mongo.Collection('headerLabelCol');
Meteor.publish('headerLabelCol', function() {
return HeaderLabelCol.find({userId: this.userId}, { sort: { createdAt: -1 } });
});
HeaderLabelCol._ensureIndex({createdAt: -1});
HeaderLabelCol.before.insert(function (userId, doc) {
doc.userId = userId;
doc.createdAt = Date.now();
});
HeaderLabelCol.allow({
insert: function (userId, doc) {
return (userId && doc.owner === userId);
}
});
Neden istemcide tür indeks Umarım benim [önceki] (http://stackoverflow.com/a/36185753/5047454) yayınlamak –
@FredJ ile doğru yapılırsa sunucu tarafından tüm hazır olarak sıralanmıştır beri .Gerçek dünyadaki büyük uygulamalarda, bir koleksiyonun verilerini aynı sayfaya döndüren birçok farklı abonelik olabilir. Bir şablonun 2 çocuk şablonuna sahip olduğunu söyleyelim. "template1", "pub1" ve "template2" öğesine abone olarak "pub2" ye abone olur. "Pub1" ve "pub2" öğelerinin her ikisi de "koleksiyon1" den veriyi döndürür ve farklı mülkler (bir "oluşturulmuşAt" ve diğeriyle "_id" tarafından yazılırsa, o zaman minimongo sonuçları istemci tarafında karıştıracaktır. Sunucu sıralamasının istemcide tutulduğundan emin olun Bu yüzden sunucuda olduğu gibi tekrar filtreleme ve sıralama yapmanız gerekir. – Kishor