javascript - Meteor 1.4,如何访问包中用户定义的集合

标签 javascript meteor package

背景:

因此,我正在使用 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:adminexample starter repo将所有内容保留在 /imports 之外,但是我怀疑如果您将集合定义保留在 /imports 之外,将其余代码移至 currently recommended project structure ,这仍然可以正常工作。 .

关于javascript - Meteor 1.4,如何访问包中用户定义的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40456475/

相关文章:

javascript - Require.js 嵌套要求

javascript - 在meteor应用程序中调试本地npm链接包

java - 更改包名称后,我在 Eclipse 上得到 java.lang.ClassNotFoundException

javascript - EJS.JS 引用错误 : title not defined

javascript - IOS/android + PhoneGap/cordova框架中的返回键

mongodb - 在 Meteor 集合中插入一个 momentjs 对象

meteor - 如何在 Meteor 中进行基于参数的发布并删除旧的订阅文档?

java - 在 MyEclipse 中 - 代码中所有包导入中缺少包前缀

javascript - 如何选择 CDN 来加载 Javascript 和 CSS 库?

javascript - Visual Studio Code - 有什么方法可以分别突出显示不同类型的错误和警告?