服务器文件夹中的Meteor出版物

时间:2017-03-03 12:02:15

标签: meteor meteor-react meteor-collections

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

API / libraryitems / libraryitems.js

import { Mongo } from 'meteor/mongo';

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

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

API / libraryitems /服务器/ publications.js

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

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

但不知何故,出乎我的意料,这份出版物还没有......

更新

这是我的订阅代码(meteor + reactjs): ./进口/ 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);

2 个答案:

答案 0 :(得分:2)

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

将导入更改为:

import LibraryItems from '../libraryitems';

另外,稍微清理出版物代码:

return LibraryItems.find({});

修改

现在您已根据要求发布了订阅代码,我看到您订阅的是具有不同名称的发布。

更改为:

Meteor.subscribe('LibraryItems.all');

希望有所帮助

答案 1 :(得分:1)

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

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