Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Meteor中订阅收藏_Javascript_Html_Mongodb_Meteor - Fatal编程技术网

Javascript 如何在Meteor中订阅收藏

Javascript 如何在Meteor中订阅收藏,javascript,html,mongodb,meteor,Javascript,Html,Mongodb,Meteor,我有一个问题,我删除了自动发布,现在我想再次订阅我的收藏,但它不起作用;( 以下是两个集合的lib代码: Events = new Mongo.Collection('events'); Friends = new Mongo.Collection('friends'); Events = new Mongo.Collection('events'); Friends = new Mongo.Collection('friends'); 然后是我的服务器main.js import { Me

我有一个问题,我删除了自动发布,现在我想再次订阅我的收藏,但它不起作用;(

以下是两个集合的lib代码:

Events = new Mongo.Collection('events');
Friends = new Mongo.Collection('friends');
Events = new Mongo.Collection('events');
Friends = new Mongo.Collection('friends');
然后是我的服务器main.js

import { Meteor } from 'meteor/meteor';

Meteor.startup(() => {
  // code to run on server at startup



});

if (Meteor.isServer) {
  Meteor.publish("events", function() {
      return events.find();
  })
  Meteor.publish("friends", function() {
      return friends.find();
  })
}
最后一个客户端代码位于客户端的main.js中

import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';

import './main.html';

Meteor.subscribe("events");
Meteor.subscribe("friends");
我正在运行Meteor 1.4,我的问题是我无法从收集中获得信息

下面是一些使用自动发布的代码

Template.NeuesEvent.events({
    "submit .add-event": function(event){
        var Name = event.target.name.value;
        var Beschreibung = event.target.beschreibung.value;
        var Datum = event.target.Datum.value;
        var Autor = Meteor.userId();
        var eingeladene = [];
             $.each($('.FreundeCheckbox:checked'), function(){            
                eingeladene.push($(this).val());
            });


        if (Name == "")
        {
            confirm("Das Event braucht einen Namen ;)")
        }
        else {

        Events.insert({
            Name: Name,
            Beschreibung: Beschreibung,
            erstelltAm: new Date(),
            Datum: Datum,
            Eingeladen: eingeladene,
            Autor: Autor
        });

        event.target.name.value = "";
        event.target.beschreibung.value = "";
        FlowRouter.go('/meineEvents');

        return false;
    }
    }
});
和助手来“打印”它


希望您能帮助我修改它,使其再次工作,谢谢;)

您必须引用符号,而不是集合名称,如下所示:

if (Meteor.isServer) {
  Meteor.publish("events", function() {
      return Events.find();
  })
  Meteor.publish("friends", function() {
      return Friends.find();
  })
}
Template.NeuesEvent.onCreated(function() {
    this.subscribe('events');
    this.subscribe('friends');
});
编辑:

你说你有这些收藏:

Events = new Mongo.Collection('events');
Friends = new Mongo.Collection('friends');
Events = new Mongo.Collection('events');
Friends = new Mongo.Collection('friends');
它们的定义是什么?它们对客户端和服务器都可用吗?它们是否在名为“/导入”的文件夹下?如果是这样,那么它们就不会被急切地加载,您需要导出/导入这些符号

编辑2:

接下来要检查的是数据是否已发布。最简单的方法是安装meteortoys:allthings(),然后查看数据是否到达客户端。如果没有,那么我会检查以确保您提供的subscribe()行与NeueEvent模板相关联

我通常在模板中进行订阅,如下所示:

if (Meteor.isServer) {
  Meteor.publish("events", function() {
      return Events.find();
  })
  Meteor.publish("friends", function() {
      return Friends.find();
  })
}
Template.NeuesEvent.onCreated(function() {
    this.subscribe('events');
    this.subscribe('friends');
});

。。。但这取决于您的用例。在这里,只要NeueEvent模板处于活动状态,这些订阅就会处于活动状态。当您切换到其他模板时,订阅将结束。

请注意,他也应该导出/导入集合,这可能会有所帮助;(你是什么意思?@chazsolo,说得好,更新了我的答案,提出了相关的问题。它们在lib文件夹中。我认为这个文件夹在两侧,还是我错了?希望你理解@zim的意思……你应该
将你的收藏导出到定义的同一个文件中,然后像你一样导入它们执行Meteor:
从'relative/path/to/file'导入{Events};