Profiles というサーバー側の mongo コレクションがあります。
ユーザーが adminId の場合、プロファイルのコレクション全体を公開してサブスクライブする必要があります。
こうすることで、管理者は各プロファイル コレクション アイテムを編集、更新などすることができます。
しかし、ユーザーが自分のプロファイル レコードを表示できるようにしたいと考えています。
だから私はこれを試しました...
クライアント側
MyProfile = new Meteor.Collection("myprofile");
Meteor.subscribe('profiles');
Meteor.subscribe('myprofile');
共通 - クライアントとサーバー側
Profiles = new Meteor.Collection("profiles");
サーバー側 - プロファイルの発行と購読は正常に機能します。
// this returns all profiles for this User
// if they belong to an ACL Group that has acl_group_fetch rights
Meteor.publish("profiles", function() {
var user_groups = Groups.find({users: this.userId()});
var user_groups_selector = [];
user_groups.forEach(function (group) {
user_groups_selector.push(group._id);
});
return Profiles.find( {
acl_group_fetch: {
$in: user_groups_selector
}
});
});
ここから問題が始まります。Profiles.find は、コンソール サーバー側に出力できるため、コレクション アイテムを返します。しかし、何らかの理由でパブリッシュとサブスクライブが機能していません。クライアントは何も受け取りません。
// return just the users profile as myprofile
Meteor.publish("myprofile", function() {
return Profiles.find({user: this.userId()});
});
私が間違っていることについてのアイデア。ユーザー A が挿入、フェッチ、更新、削除できるレコードのコレクションを公開できるようにしたいのですが、ユーザー B (C、D、および E) は自分のレコードしか表示できません。