发布与登录用户属于同一组织的Meteor用户?

时间:2016-04-03 15:45:23

标签: javascript mongodb meteor collections publish

我尝试创建一个页面,显示数据库中属于同一组织的所有用户。

我的用户存储如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="1dp"
   >
</ListView>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:id="@+id/tvfrag"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="219dp" />

我知道我必须将用户发布到我的用户列表组件,并且我正在努力弄清楚如何只发布其profile.organization与登录用户profile.orgainzation相匹配的用户。

这将返回所有用户,我做到了这一点:

Accounts.createUser({
    email: email,
    password: password,
    profile:{
        firstName: first,
        lastName: last,
        type: "Member",
        organization: organization,
        created: date
    }
});

我尝试使用您在此处看到的下一个代码块,但它不起作用,可能由于多种原因,它甚至会抛出错误,说我无法使用Meteor.user()服务器端,我必须使用this.user()......但是它没有工作:

return Meteor.users.find();

我不知道从哪里开始。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我认为这可能有用(未经测试)。这是服务器端功能。

Meteor.publish("organizationUsers", function () {
  if (this.userId) {
    var user = Meteor.users.findOne(this.userId); 
    var org = user.profile.organization; 
    return Meteor.users.find({'profile.organization': org});
  }
});

客户端,您可以使用以下方法过滤所需的用户(并排除当前用户)

Meteor.users.find({'profile.organization': org, '_id' : {$not : Meteor.userId()}});