2016-03-24 18 views
0

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); 
    } 
}); 

cevap

0

ben siz de yardımcı koşulu eklemek gerek.

//client.js 
Template.header.helpers({ 
    headerLabel: function() { 
     var result = HeaderLabelCol.findOne({}, { sort: { createdAt: -1 } }); 
     return result ? result.headerLabel : 'Make a selection'; 
    } 
}); 
+0

Neden istemcide tür indeks Umarım benim [önceki] (http://stackoverflow.com/a/36185753/5047454) yayınlamak –

+0

@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