0

在我的应用程序中,我有一个管理区域,该区域也有一些与之配套的管理客户端 MiniMongo。所以管理员订阅了一个发布,然后这个发布将来自多个集合的数据放在这个管理员-客户端 MiniMongo 集合上。

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

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

现在代码正在 app 上运行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)
4

1 回答 1

1

您应该在服务器上创建集合。(将 adminData.js 移到publication.js 之外)。您还应该检查出版物本身的安全性。Meteor.userId() 只能在服务器上的流星方法中工作,如果你把它留在那里你会出错

在客户端,您的 adminComponent 需要订阅服务器发布才能访问集合的数据。为此,您需要将组件包装在 react-komposer 之类的东西中

希望这可以帮助

于 2018-01-05T00:19:50.807 回答