Meteor限制对文件和集合的访问

时间:2018-01-04 23:46:28

标签: meteor minimongo meteor-collections

在我的应用中,我有管理区域,此区域还有一些 admin-client MiniMongo 。因此管理员 订阅出版物,然后此出版物将来自多个馆藏的数据放入此管理客户端MiniMongo集合中。

订阅的访问限制,发布也是如此。但是我注意到集合仍然为每个用​​户注册,但是(我相信)只有在管理员登录时才会填充数据。

我仍然想知道我是否只能在管理员登录而不是之前创建该集合?

现在代码正在应用startup上运行。

现在我有这样的话:

export const AdminData = new Mongo.Collection("admin_data");

我也试过这个,但它不起作用:

let AdminData;
if(Roles.userIsInRole(Meteor.userId(), 'admin'){
  AdminData = new Mongo.Collection("admin_data");
}

export default AdminData;

如果它有所作为,这是我的项目结构

client/
server/
imports/
--api/
----admin/
------client/
--------adminData.js (the above file)
------server/
--------publication.js
--startup/
----client/
----both/
----server/
--ui/
----adminArea/
------adminComponent.jsx (the collection is only imported here)

1 个答案:

答案 0 :(得分:1)

您应该在服务器上创建集合。 (除了publication.js之外,移动adminData.js)。您还应该检查发布本身的安全性。 Meteor.userId()只能在服务器上的meteor方法中使用,如果你把它放在那里就会出错

在客户端上,您的adminComponent需要订阅服务器发布以访问集合的数据。为此,您需要将组件包装在react-komposer

之类的内容中

希望这有帮助