流星订阅数据未显示在 Chrome 控制台中

Meteor subscription data not showing up in Chrome Console

本文关键字:Chrome 控制台 显示 数据 流星      更新时间:2023-09-26

我正在使用Diffial的流星样板作为简单应用程序的起点。 目前它包括铁路由器1.0.6。

我想处理诸如/epidodes/5 之类的路由,其中它根据 episodeNumber 属性显示来自 Episode 集合的文档数据。

下面是一个示例文档,我可以使用"流星壳"进行查询:

> Episodes.findOne({episodeNumber: 5})
{ title: 'Ingaus carsur diain nofaex deradisancom.',
description: 'Warde tu alde ationsome an. Ryretyening lowtheland iti combeex. Proset    mafacic lyed oan odiscon alsub isper. Es tiestionthe perconsiy lytion ac tioners inter mycal. Eded uernlarer indis u minca taladpaicar mycom. Cuopbleerpo tem ausin fored alersed mentfa eredal iterning peunbae ex. Oer omade the ican alfor pening. Thederder ingpro reumer esconex. Postions ery terre tionthepen aatcoming tyre beter protioni tionedpe riter. Toreraners typle erntyraa solyi. Themag alrei raat protionaset edcom cypro atapasi afthe iun edterfiassup.',
vimeoId: '80816872',
publishedOn: 510603296882,
free: false,
rating: 2,
episodeNumber: 5,
_id: 'Ewznhyex5puyccSFK' }

但是,它没有显示在谷歌浏览器的控制台中。

以下是相关文件:

合集/剧集.js

Episodes = new Mongo.Collection('episodes'); 

路线.js

Router.map(function() {                                                                                              
// some other routes...
// the route where I'm stuck
this.route('episodesShow', {
  path: '/episodes/:episodeNumber',
  waitOn: function() {
    return Meteor.subscribe('episode', this.params.episodeNumber);
  },
  data: function() {
    return Episodes.findOne({episodeNumber: this.params.episodeNumber});
  }
});

服务器/发布.js

Meteor.publish("episode", function(episodeNumber) {
  check(episodeNumber, String);
  return Episodes.findOne({episodeNumber: episodeNumber});
});

有关如何解决此问题以查看客户端未显示数据的原因的任何指导将不胜感激。

我认为

问题是我有另一个名为 episodes 的订阅,它与集合名称相同。

合集/剧集.js

Episodes = new Mongo.Collection('episodes');

服务器/发布.js

Meteor.publish("episodes", function() {
  return Episodes.find({});
});

我将已发布记录集的名称更改为剧集列表

Meteor.publish("episodesList", function() {
  return Episodes.find({});
});

为了解决这个问题,我还创建了一个名为 client/main 的文件.js并订阅了我已经发布的 episodesList

Meteor.startup(function() {
  Meteor.subscribe("episodesList");
});

我永远无法让 episodeNumber 参数在/episodes/:episodeNumber 路由中工作。 我能够让_id工作,但这很丑陋,所以我创建了一个 slug 属性并且工作正常。

下面是路由中的更新定义.js:

  this.route('singleEpisode', {
    path: '/episodes/:slug',
    waitOn: function() {
      return Meteor.subscribe('episodesList');
    },
    data: function() {
      return Episodes.findOne({slug: this.params.slug});
    }
  });

尝试返回光标而不是数组,例如:

Meteor.publish("episode", function(episodeNumber) {
  check(episodeNumber, String);
  return Episodes.find({episodeNumber: episodeNumber});
});

不能在发布函数中发送非游标。

您可能应该在控制台中出现错误server

publish function not-returning array of non-cursor或类似的东西

尝试发布游标

Meteor.publish("episode", function(episodeNumber) {
  check(episodeNumber, String);
  //check whether the episodes are existed or not
  console.log(Episodes.find({episodeNumber: episodeNumber}).count());
  return Episodes.find({episodeNumber: episodeNumber});
});

并检查您的服务器控制台(终端)是否存在错误