javascript - 根据值过滤器从数组中选择字段

标签 javascript angularjs mongodb

对 Angular(以及整个 MEAN 堆栈)非常陌生。

我有一个 MongoDB 数据库集合,如下所示:

db.users({ 
    username: "Test1", 
    fname: "Bob", 
    lname: "Saget", 
    email: "test@test.com", 
    password: "12345",  
    status: [{ 
        active: false, 
        "non-active": false, 
        suspended: true, 
        "un-confirmed": false, 
        banned: false 
    }] 
})

我只是希望将所有用户打印到屏幕上。并且一直在成功地做到这一点,就像这样。

        <tr ng-repeat="user in users">
            <td>{{user.username}}</td>
            <td>{{user.fname + ' ' + user.lname}}</td>
            <td>{{user.email}}</td>
            <td>{{user.password}}</td>
            <td></td>
        </tr>

我的问题是尝试根据 bool 值显示状态数组的字段(而不是值)。因此,在该示例中,它将在页面上读取“挂起”而不是“true”(并且仅返回真实值 - 其中只有一个)。

我是否变得斗鸡眼了,对于这种类型的功能是否有更好的数据库结构可以遵循?

我尝试了 ng-if 和 ng-repeat 与过滤器:{} 选项的组合。

如果需要,我可以提供额外的详细信息。

你们会怎么做?

非常感谢

最佳答案

获取用户后,您可以浏览它们并像这样更新状态。

angular.forEach($scope.users, function(a, b){
  var user = a;
  var status = a.status[0]; // <-- because your status are an array we pick the first one.
  for (var k in status) {
    if (status.hasOwnProperty(k)) {
      if (status[k]) { // <-- if status is true then get the key.
        user.status = k; // <-- set the user status object to the key.
      }
    }
  }
});

您可以将 user.status = k 更改为您想要的任何内容,将其设置为 status 会覆盖状态数组。

工作示例 -> http://jsbin.com/zarulo/1/edit?html,js,output

希望这有帮助!

关于javascript - 根据值过滤器从数组中选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30532166/

相关文章:

javascript - 插入登录函数 ASP.NET

javascript - Angularjs - 动态地将属性值附加到绑定(bind)对象。如何?

mongodb - 在 map reduce 中使用 IF/ELSE

node.js - 使用 Mongoose ORM 的 killer 锏是什么?

javascript - 使用 express 将 MongoDB 查询结果作为 JSON 发送

javascript - jQuery 点击 css3 旋转

javascript - 在井内悬停时向 Bootstrap 缩略图图像添加叠加层

javascript - 当用户单击按钮时 Bootstrap 向下滚动

javascript - 为什么\n 和 <br> 不能在字符串中使用?

javascript - AngularJS,输入更改时在按钮上设置类