2014-12-16 12 views
8

Bulduğumda Meteor yayınımla bazı kablolu sorunlar olması işe yaradı, ancak bulup bulmaz ve bulO ile bir imleç hatası alıyorum. İşte Meteor yayınlanmamış undefined veya Publish işlevi yalnızca bir İmleci veya bir dizi Döndürürü döndürebilir

Ben tanımsız olsun Bunun için benim kod

Meteor.publish('organizations', function() { 
    var user = Meteor.users.findOne(this.userId); 
    if(!user) return ''; 
    var debugTest = Organizations.findOne(user.organizationId); 
     console.log(debugTest._id); 
    //return Organizations.findOne({_id: user.organizationId}); 
}); 

olduğunu

aşağıdaki

Meteor.publish('organizations', function() { 
    var user = Meteor.users.findOne(this.userId); 
    if(!user) return ''; 
    console.log(user.organizationId); 
    var debugTest = Organizations.findOne(user.organizationId); 
    console.log(debugTest._id); 
    //return Organizations.findOne({_id: user.organizationId}); 
}); 

geri her iki kimlikleri olsun ama yaparsanız alıyorum dönüş aşağıdaki hata ile

NvoF9MimZ6tJ95c3m NvoF9MimZ6tJ95c3m

alt KLnQphHTXmQcjEi2D Hata hata durum: sadece bir imleç veya Mongo'nın imleç dönmez

cevap

11

findOne imleçler

bir dizi geri fonksiyona Yayın. Mongo belgesini döndürür. Bunun işe yaramasını istiyorsanız, bunun yerine return Organizations.find({_id: user.organizationId});'u kullanmayı deneyin. Bu, yayınlama çağrısının beklediği tek bir belge imlecini döndürecektir.

Daha fazla bilgi için docs'a bakın.

+0

ben kodunun ilk versiyonunda ama yine tanımsız var DebugTest olsun = Organizations.find olduğunu buydu ({_ id: user.organizationId}) ; console.log (debugTest._id); –

+0

Daha açık olmak gerekirse, bu işleve sahip olmanız gerektiğini söylemeliyim 'return Organizations.find ({_ id: user.organizationId}); –

+0

Ben zaten bu dönmek Organizations.find ({_ id: user.organizationId}); Hiçbir şey iade edilmiyor IE undefined –

0

Bu yüzden sorun benim şablonum nedeniyle pub/alt iyi çalışıyordu ama benim şablon yardımcılarımda sorun neden olan aşağıdaki vardı. İşte

hasOrganization: function() { 
    var user = Meteor.user(); 
    var organizationsCount = Organizations.find({$or:[{userId: user._id},{**userId**: user.organizationId}]}).count(); 
    console.log(organizationsCount); 

    if (organizationsCount >= 1) { 
     return true 
    } else { 
     return false 
    } 

sabit versiyon

hasOrganization: function() { 
    var organizationsCount = Organizations.find().count(); 
    if (organizationsCount >= 1) { 
     return true 
    } else { 
     return false 
    } 
    } 
İlgili konular