【问题标题】:Meteor publications in server folder服务器文件夹中的 Meteor 出版物
【发布时间】:2017-03-03 21:11:01
【问题描述】:

我有一个名为 LibraryItems 的集合,它在客户端和服务器端都可用。

api/libraryitems/libraryitems.js

import { Mongo } from 'meteor/mongo';

const LibraryItems = new Mongo.Collection('libraryitems');
export default LibraryItems;

我想要一个包含特定出版物的服务器文件夹,而不是同一文件中的 if (Meteor.isServer) {..} 出版物:

api/libraryitems/server/publications.js

import LibraryItems from '../libraryitems';
import { Meteor } from 'meteor/meteor';

Meteor.publish('LibraryItems.pub.all', function () {
  return LibraryItems.find({});
});

但不知何故,出乎我的意料,此出版物不可用...

更新

这是我的订阅代码(meteor+reactjs): ./imports/ui/Library.js

import LibraryItems from '../api/libraryitems/libraryitems';
import { createContainer } from 'meteor/react-meteor-data';
...
export default createContainer(() => {
  Meteor.subscribe('LibraryItems.pub.all');
  var libraryitems = LibraryItems.find().fetch();
  return {
    libraryitems: libraryitems
  }
}, Library);

【问题讨论】:

  • “此出版物不可用”是什么意思?
  • 既然您发布了容器代码,我已经编辑了我的原始答案
  • @Sean,这是一个错字,我的错

标签: meteor meteor-react meteor-collections


【解决方案1】:

您正在将 LibraryItems 导出为默认导出,这意味着当您导入它时,您不需要用大括号括起来。

将您的导入更改为:

import LibraryItems from '../libraryitems';

另外,稍微清理一下发布代码:

return LibraryItems.find({});

编辑

现在您已按要求发布了订阅代码,我发现您正在以不同的名称订阅该出版物。

改为:

Meteor.subscribe('LibraryItems.all');

希望有帮助

【讨论】:

  • 好吧,那你肯定是别处有问题。你能发布你的订阅代码和帮助代码吗?
【解决方案2】:

我忘记在mains.js注册出版物了:

import '../imports/api/libraryitems/server/publications';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多