如何在Meteor中指定字段说明符

时间:2015-08-24 07:18:33

标签: javascript meteor meteor-blaze

我将用户数据存储在Meteor.users.profile中,但我无法通过return命令检索它们。

代码如下所示:

Template.details.events({
    'submit form': function(event) {
        event.preventDefault();

        var currentUser = Meteor.userId();
        var name = event.target.nam.value;
        var age = event.target.nombor.value;
        // var gender = event.target.sex.value; 
        // var gen = Meteor.user().profile.gender;

        Meteor.users.update({
            _id: currentUser
        }, {
            $set: {
                "profile.name": name,
                "profile.age": age
            }
        });
        Router.go('/tryy');
    }
});
Template.tryy.helpers({
    'people': function() {
        //var gender = Meteor.user().profile.gender;
        return Meteor.users.find({}, {
            gender: "gender"
        });
    }
});

HTML:

<template name="tryy">
  <ul>  
      {{#each people}}
          <li><a href="#"> {{name}} {{age}}  </a></li> 
      {{/each}} 
 </ul>
</template>

这有什么问题:return Meteor.users.find({}, {gender: "gender"});

我希望看到与currentUser相对的性别列表。

2 个答案:

答案 0 :(得分:1)

嗯......我已经回答了你的另一个问题

首先,当助手中没有登录用户时,您应该处理这种情况:

Template.tryy.helpers({
    'people': function() {
        // you should deal with the situation when no current user
        if (Meteor.user() === null) return null;  // or others way you like
        var gender = Meteor.user().profile.gender;
        return Meteor.users.find({}, {
            gender: "gender"
        });
    }
});

我认为在提出这些问题之前,你应该阅读Meteor document of Mongo collection和Mongo文件......

正如你问的那样: 要查找名称与对象属性(profile.name)匹配的用户: Meteor.users.find({"profile.gender": gender});

其他一些有用的简单查询: 要查找名称显示在数组中的用户(假设它名为friends): Meteor.users.find({"profile.name": friends});

如果我们有Alice,Bob,Cathy和朋友[&#39; Alice&#39;,&#39; Cathy&#39;],它会返回Alice和Cathy

总而言之,你应该仔细阅读这些文件,它会对你有所帮助: - )

答案 1 :(得分:0)

find()的第一个参数是选择器,第二个参数是其他选项。在这种情况下,如果您想按性别查找用户,请使用选择器:

Meteor.users.find({"profile.gender": gender});

这将返回具有指定gender的所有用户。另请查看非常详细的Meteor documentation

此外,在您的模板中,您应该将name更改为profile.name(年龄相同),以及存储这些值的位置:

{{#each people}}
    <li><a href="#"> {{profile.name}} {{profile.age}}  </a></li> 
{{/each}}