Javascript .find() 如何查找并返回所有用户名?

标签 javascript mongodb meteor find

我现在正在学习 Meteor,想要获取所有用户名 我尝试了这个:Meteor.users.find({}, {"name": 1}).fetch() 以及它的许多变体。我总是只获取 MongoDB 中的整个对象。但我只想获得所有干净的用户名!这怎么可能? 我用谷歌搜索了一遍,但什么也不明白:(

最佳答案

你已经很接近了,至少在正确的轨道上。这是我的做法。

对于初学者来说,name 不是默认字段,通常应将其放置在用户文档的 profile 子文档中。像这样:

{ 
    "_id" : "FkYj9MkLY2TmcDf7w",
    "emails" : [  
        {  "address" : "your@email.com",  "verified" : false } 
    ], 
    "profile" : { 
        "name" : "Bob Loblaw",
        "position" : "Attorney at law"
    }
}

仅供引用,为简洁起见,我在上面的示例中省略了典型的密码和服务相关详细信息。

要检索名称,请执行以下操作:

Template.yourTemplate.helpers({
    'users': function() {
        return Meteor.users.find({});
    }
});

然后在模板中显示名称:

{{#each users}}
    {{profile.name}}
{{/each}}

如果您想访问 JavaScript 中的名称而不是模板:

var users = Meteor.users.find({}).fetch();
_.each(users, function(user) {
    if(user.profile.name)
        console.log(user.profile.name);
});

因此,您通常可以使用点表示法访问文档字段:

Meteor.users.findOne({}).profile.name

请注意,在访问字段之前检查查询是否返回结果通常是个好主意(如上所示)。

最后,有一种方法可以检索所有设置了名称的用户并排除没有设置名称的用户。

Meteor.users.find({'profile.name': {$exists: true}})

最后需要注意的是,'profile.name' 包含在引号中,因为字段名称包含 .。这还向您展示了如何在查询本身中使用点表示法访问子文档字段。

关于Javascript .find() 如何查找并返回所有用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291137/

相关文章:

javascript - Dojo:TabContainer - 如何在标题中放置菜单按钮?

mongodb - 如何在mongodb中向数组添加对象

javascript - 如何通过异步 Mongo 调用设置 React State?

mongodb - 无论如何要发现哪些IP地址连接到数据库?

javascript - Meteor - 全局 keydown 后找到集合?

javascript - 未捕获的类型错误 : Cannot read property 'prototype' of undefined Meteor-File Package

javascript - Typescript rxjs 可观察数组连接

javascript - 使用 JQuery 每隔一定数量的 child 插入 HTML 元素

javascript - 如何在 Javascript 中创建数学上正确且可接受的除法

javascript - Meteor 服务器端 js 兼容性