根据值过滤器

时间:2015-05-29 14:27:18

标签: 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>

我的问题在于尝试根据布尔值显示状态数组的字段(而不是值)。因此,在示例中,它将读取“暂停”一个页面而不是“真实”(并且仅返回真正的值 - 只有一个)。

我是否会变得眼花缭乱,是否有更好的数据库结构可以支持这类功能呢?

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

如果需要,我可以提供额外的细节。

你们怎么会这样做?

非常感谢

1 个答案:

答案 0 :(得分:1)

获得用户后,您可以浏览并更新状态。

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更改为您想要的任何内容,将其设置为状态会覆盖状态数组。

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

希望这有帮助!