在我的应用中,我有管理区域,此区域还有一些 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)
答案 0 :(得分:1)
您应该在服务器上创建集合。 (除了publication.js之外,移动adminData.js)。您还应该检查发布本身的安全性。 Meteor.userId()只能在服务器上的meteor方法中使用,如果你把它放在那里就会出错
在客户端上,您的adminComponent需要订阅服务器发布以访问集合的数据。为此,您需要将组件包装在react-komposer
之类的内容中希望这有帮助