我正在尝试获取Meteor Admin显示 SyncedCron 的条目。 Meteor 管理员要求您attachSchema以便登记收藏。我已经用我自己的简单集合做到了这一点,例如基本事件集合,但无法弄清楚我如何在管理员中看到 SyncedCron 作业:
SyncedCron 在我的应用程序中运行得很好。文档说它是“uses a collection called cronHistory to syncronize between processes”。如果我运行:
> SyncedCron._entries
{ name: 'LExXMbhKE7bJF5nay notification 2',
schedule: [Function],
job: [Function],
_timer: { clear: [Function] } },
'LExXMbhKE7bJF5nay notification 3':
{ name: 'LExXMbhKE7bJF5nay notification 3',
schedule: [Function],
job: [Function],
_timer: { clear: [Function] } } }
我检查 cronHistory 是否存在:
Mongo.Collection.getAll();
{ name: 'cronHistory',
instance:
{ _makeNewID: [Function],
_transform: null,
_connection: [Object],
_collection: [Object],
_name: 'cronHistory',
_driver: [Object],
_restricted: false,
_insecure: undefined,
_validators: [Object],
_prefix: '/cronHistory/',
before: [Object],
_hookAspects: [Object],
after: [Object],
hookOptions: [Object],
direct: [Object] },
options: undefined }
因此,我尝试在为 Meteor Admin 注册之前附加一个架构:
cronHistory.attachSchema(new SimpleSchema({
name: {
type: String,
label: "Name"
}
}));
并得到错误:
ReferenceError: cronHistory is not defined
有什么想法吗?
最佳答案
我相信 SyncedCron
写入 cronHistory
集合,但不导出集合句柄。根据this ,该集合应该可以通过 SyncedCron._collection
访问。
鉴于此,您应该能够执行以下操作:
Meteor.startup(function () {
var root = Meteor.isClient ? window : global;
root.CronHistory = SyncedCron._collection;
root.CronHistory.attachSchema(...);
});
<小时/>
更新答案
根据我们下面的对话,这是一个非常困难的问题。您有两个包,您的应用程序都定义和使用集合,并且排序需要精确才能使所有内容正常工作。这就是我要做的:
像在应用程序中定义任何其他集合一样定义
CronHistory
集合,并像平常一样附加架构。将
CronHistory
以及应用中的其余集合添加到您的AdminConfig
中。使用local version
SyncedCron
并修改它以查找全局定义的CronHistory
集合。请参阅this post一些提示。请注意,您需要删除new Mongo.Collection(options.collectionName);
行。
关于javascript - Meteor admin 显示其他包的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930124/