2017-10-17 70 views
1

我有一些操作,他们是查看,编辑,删除,为每个页面添加。需要在mongodb中执行push操作不起作用

var roleprivilege = { 
      'role_name' : req.body.role_name, 
      'add':req.body['add'], 
      'del':req.body['del'], 
      'view':req.body['view'], 
      'edit':req.body['edit'], 
       } 

我使用findOneAndUpdate

mongo.role.findOneAndUpdate({'_id': id},roleprivilege,{upsert: true,new : true},function(err, response) { 
       console.log("Inserted"); 
      }); 

它的工作好,但我需要存储所有的添加,删除,编辑,里面的角色视图。我想这样的

var roleprivilege = { 
      'role_name' : req.body.role_name, 
      'role':{ 
      'add':req.body['add'], 
      'del':req.body['del'], 
      'view':req.body['view'], 
      'edit':req.body['edit'] 
       } 
      } 

这里的问题是,如果我在行动中只能选择一个值时,是商店像绳子

而我的看法是这里

 <div class="col-md-12 role_class" ng-repeat="menu in privilege_menu" > 
      <div class="col-md-2">{{menu}}</div> 
      <div class="col-md-10" ng-int="{{l_name =(menu|lowercase)}}"> 
      <span class="role_checkbox"> <label class="control control--checkbox">View 
       <input type="checkbox" ng-checked="check_role(l_name,'view')" name="view" value="{{menu|lowercase}}" /> 
       <div class="control__indicator"></div> 
       </label></span> 
      <span class="role_checkbox" > <label class="control control--checkbox">Add 

        <input type="checkbox" name="add" value="{{menu|lowercase}}" /> 
        <div class="control__indicator"></div> 
       </label></span> 
      <span class="role_checkbox"> <label class="control control--checkbox">Edit 
        <input type="checkbox" name="edit" value="{{menu|lowercase}}" /> 
        <div class="control__indicator"></div> 
       </label></span> 
      <span class="role_checkbox"> <label class="control control--checkbox">Delete 
        <input type="checkbox" name="del" value="{{menu|lowercase}}" /> 
        <div class="control__indicator"></div> 
       </label></span> 
      </div> 
     </div> 

我需要在输出以下格式

{ 
    "_id" : ObjectId("592817d6f6d6dd35c381bb0d"), 
    "role_name" : "TSE", 
    "role" : { 
     "view" : [ 
      "dashboard", 
      "settings", 
      "users", 

     ], 
     "add" : [ 
      "vehicles", 
      "customers", 
      "reports" 
     ], 
     "edit" : [ 
      "users" 
     ] 
    } 
} 

我req.body看起来像这样

{ role_name: 'SA', 
    view: [ 'dashboard', 'users', 'settings' ], 
    add: 'users', 
    edit: 'users', 
    del: [ 'users', 'settings' ] } 
+0

怎样的req.body对象样子? –

+0

感谢您的回复 我的req.body看起来像这样{role_name:'SA', view:['dashboard','users','settings'], add:'users', edit:'users ', del:['users','settings']} – Vishnu

+0

我已更新我的代码 – Vishnu

回答

1

这里的问题是,当只有一个元素如req.body不使用列表对象:

view: [ 'dashboard', 'users', 'settings' ], 
add: 'users', instead of add: ['users'] 

您需要提高可变roleprivilege来处理这种情况的产生在将它插入到mongoDB之前。

你想roleprivilege看起来像这样,当你打印:

{ 
    'role_name' :'SA', 
    'role':{ 
    'add': ['users'], 
    'del': [ 'users', 'settings' ], 
    'view':[ 'dashboard', 'users', 'settings' ], 
    'edit':['users'] 
    } 
} 
+0

比你我解决了问题 – Vishnu