流星:订阅不起作用



我正在尝试构建一个非常简单的流星应用。我已经实施了所有的粗鲁。但是我的问题是,当我使用发布,然后是 subscribe 时,没有返回数据。我的代码如下:

imports api tasks tasks.js

import { Mongo } from 'meteor/mongo';
import { Meteor } from 'meteor/meteor';
TasksSchema = new SimpleSchema({
   title: {
    type: String
   },
   owner: {
     type: String
   }
 });
export const Tasks = new Mongo.Collection('tasks', { schema: TasksSchema });
if (Meteor.isServer) {
   Meteor.publish('task.list', function() {
       return Tasks.find({ owner: this.userId });
   });
}

imports ui components home home home.js

import { Tasks } from '/imports/api/tasks/tasks.js';
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating'
import { ReactiveDict } from 'meteor/reactive-dict';
import './home.html';
if (Meteor.isClient) {
    Template.home.onCreated(function bodyOnCreated() {
       Meteor.subscribe('task.list');
    });
    Template.home.helpers({
        tasks() {
            let userId = Meteor.userId();
            return Tasks.find({ owner: userId }, { sort: { updatedAt: -1 } });
        }
   });
}

imports ui components home home.html

 <!-- here nothing is shown,although I have data -->
 {{#each task in tasks  }}
      {{task.title}} 
  {{/each}}

有什么建议吗?预先感谢。

而不是 {{task.title}}尝试 {{title}},并在浏览器控制台task.find({})。fetch()中查看并查看是否可以看到记录。

可能是因为您的订阅尚未准备好在客户端上使用。您要做的就是将each代码包装在subscriptionsReady功能中:

{{#if Template.subscriptionsReady}}    
  {{#each task in tasks  }}
    {{task.title}} 
  {{/each}}
{{else}}
  <p>Loading...</p>
{{/if}}

上面应该有效。您可以检查此链接以获取有关如何使用subscriptionsReady

的更多信息

最新更新