0

我有一个名为的集合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);
4

2 回答 2

2

您正在将 LibraryItems 导出为默认导出,这意味着当您导入它时,您不需要在其周围加上大括号。

将您的导入更改为:

import LibraryItems from '../libraryitems';

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

return LibraryItems.find({});

编辑

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

改成:

Meteor.subscribe('LibraryItems.all');

希望有帮助

于 2017-03-03T12:37:19.957 回答
1

我忘记在以下位置注册出版物mains.js

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

于 2017-03-03T13:11:01.467 回答