服务器文件夹中的流星出版物
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';
我有一个名为 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';