Метеоритная подписка не загружает данные с сервера - PullRequest
0 голосов
/ 07 июня 2018

У меня проблемы с метеором 1.6.Сначала я создал экземпляр базы данных и попытался подписаться на клиенте.через форму я могу ввести данные в свою базу данных.Но не смог получить его через подписку.Кто-нибудь может сказать мне, что я сделал неправильно в своем коде?

import { Template } from "meteor/templating";
import { Notes } from "../lib/collection";
import { Meteor } from "meteor/meteor";
// import { ReactiveDict } from 'meteor/reactive-dict';
import "./main.html";
/* 
Template.body.onCreated(function bodyOnCreated() {
  this.state = new ReactiveDict();

  Meteor.subscribe("db1");
}); */

Template.Display.helpers({

  notes() {
    Meteor.subscribe("db1");
    return Meteor.call('data');
  }
});

Template.body.events({
  "click .delete": function() {
    Notes.remove(this._id);
  },

  "submit .formSubmit": function(event) {
    event.preventDefault();
    let target = event.target;
    let name = target.name.value;

    Meteor.call("inputs", name);

    target.name.value = "";

    return false;
  },
  "click .userDetail": function() {
    if (confirm("Delete the user Detail ?")) {
      Notes.remove(this._id);
    }
  }
});

вот код для публикации:

import { Mongo } from 'meteor/mongo';
export const Notes = new Mongo.Collection('notes');

Meteor.methods({
    inputs:(name)=> {
      if (!Meteor.user()) {
        throw Meteor.Error("Logged in");
      }
      Notes.insert({
        name: name,
        createdAt: new Date()
      });
    },
    data:()=>{
        return Notes.find({});
    }
  });

1 Ответ

0 голосов
/ 07 июня 2018

Meteor.subscribe("notes"); должен быть в Template.body.onCreated методе lifycycle.вам нужно написать код публикации отдельно, а не внутри Meteor.method.см. ниже формат,

Meteor.publish('notes', function tasksPublication() {
    return Notes.find({});
});

Внутри помощника просто вызовите подписанную коллекцию ниже,

Template.Display.helpers({
  notes() {
    return Notes.find({});
  }
});

** ПРИМЕЧАНИЕ: ** Никогда не используйте Meteor.call внутри помощникаметод.helpers являются реактивными и в режиме реального времени.

...