服务器文件夹中的流星出版物

Meteor publications in server folder

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

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

将您的导入更改为:

import LibraryItems from '../libraryitems';

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

return LibraryItems.find({});

编辑

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

更改为:

Meteor.subscribe('LibraryItems.all');

希望对您有所帮助

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

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