背景:
因此,我正在使用 React 创建一个针对meteor 1.4.2 的管理包,这样我就可以学习如何做这类事情。管理包将只能更新用户定义的集合(插入、删除、修改)。
我的应用程序中的 imports/api/posts.js
下有此文件:
// imports/api/posts.js
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
export const Posts = new Mongo.Collection('posts');
if (Meteor.isServer) {
Meteor.publish('posts', function postsPublication() {
return Posts.find();
});
}
我可以使用例如 import { Posts } from '../imports/api/posts.js';
在我的应用程序中轻松访问此文件。
问题:
如何从管理包中访问相同的 Posts
集合,以便我可以插入新项目、删除项目等?
另外,我看到了this post之前有过类似的事情,但这是否意味着像 yogiben:admin 这样的包也不适用于模块系统?
最佳答案
理解这一点的关键是认识到一些meteor包是库,一些是(Meteor)框架的扩展,如defined here .
yogiben:admin
是 Meteor 框架的扩展,因为它需要能够找到您编写的代码(您的集合)才能正常工作。
如何启用此功能取决于您。以前,集合是全局定义的,因此它们将被(自动/热切)导入,并且通常位于 /client
或 /server
目录之外,以便可以在两个服务器上访问它们客户端和服务器。
现在您可以选择 - define your collections outside the /imports
directory, and they will still be eagerly imported ,或者将它们导入到您的管理框架需要的地方。作为第三种方式,您可以要求将它们附加到(服务器端)全局对象,例如作为字典(即 global.myCollections = {'posts': Posts}
),以及(在浏览器中)window
对象(使用 window.myCollections = { '帖子':帖子}
)。
yogiben:admin
的 example starter repo将所有内容保留在 /imports
之外,但是我怀疑如果您将集合定义保留在 /imports
之外,将其余代码移至 currently recommended project structure ,这仍然可以正常工作。 .
关于javascript - Meteor 1.4,如何访问包中用户定义的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40456475/