Я хочу отображать только отдельные элементы на основе переданного идентификатора. Я использую метод подписки и публикации метеор для того же самого, также FlowRouter для маршрутизации. Когда я пытаюсь получить данные с помощью findOne и передаю Id, он не возвращает никаких данных, но когда я нахожу ({}), он получает все данные и отображает их, не уверен, почему findOne не работает.Одиночная подписка не работает в моем коде метеор
Примечание. Я пытаюсь получить запись на основе идентификатора объекта (_id), предоставленного MongoDB.
posts = Mongo.collection("allPosts");
<Template name="stdSingleView">
{{#if Template.subscriptionsReady}}
{{#with studenthistory}}
{{id}} - {{name}}
{{/with}}
{{else}}
Loading....
{{/if}}
</Template>
Template.stdSingleView.onCreated(function(){
var self = this;
self.autorun(function(){
var Id = FlowRouter.getParam('id');
self.subscribe('singlePost', Id);
});
});
Template.stdSingleView.helpers({
studenthistory: function(){
var id= FlowRouter.getParam('id');
return posts.findOne({_id: id});
}
});
if (Meteor.isServer) {
Meteor.publish("allposts", function() {
return posts.find({});
});
Meteor.publish('singlePost', function(id) {
check(id, String);
return posts.find({_id: id});
});
}
pages.route('/:id', {
name: 'singleView',
action: function(params) {
BlazeLayout.render('stdSingleView');
}
});
Как вы можете 'но когда я действительно нахожу ({}), он получает все данные и отображает его,' с '{{#with studenthistory}}'? –
find тоже работает для меня, но мне нужно найти findOne, так как мне нужно показать только одну запись, которая не работает. Pls видит полный код здесь: https://jsfiddle.net/3s6zL5hg/1/ –