2017-05-31 8 views
0

私は現在のユーザーの文書をコレクションにレンダリングする次のコードを持っています。しかし、同じ組織に所属する管理者がコレクションを表示したり編集したりできるようにしたい。残念ながらthis.user.profile.organizationは機能しません。ですから、そのオブジェクトを同じ組織に所属することを管理者が利用できるようにするにはどうすればよいでしょうか。作成されたEVeryドキュメントは、現在のユーザーの構成を取得します。サーバーサイドの流星this.userprofile

Meteor.publish('skills', function skillsPublication() { 
    return Skills.find({ 
     owner: this.userId, 
    }); 
}); 

答えて

1

サーバーにいるときは、MongoDBデータベースからユーザー文書をいつでも照会できます。そのフィールドは常にクライアントに公開されているため

Meteor.publish('skills', function skillsPublication() { 
    const user = Meteor.users.findOne({ _id: this.userId }) 
    // now you can do user.profile.organization 

    return Skills.find({ 
    $or: [ 
     { owner: this.userId }, 
     { organization: user.profile.organization } 
    ] // returns a document owned by the user or owned by the user's organization 
    }) 
}) 

ちょうどノートでは、流星は、ユーザーのコレクションに.profileフィールドを使用しないことをアドバイスします。メテオでは、代わりにユーザーのドキュメントにトップレベルのキーを使用することを提案しています。