【问题标题】:Need to perform push operation in mongodb is not working需要在 mongodb 中执行推送操作不起作用
【发布时间】:2018-03-29 00:16:51
【问题描述】:

我有一些动作,它们是查看、编辑、删除、添加每个页面。

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");
            });

它工作得很好,但我需要将所有的 add、del、edit、view 存储在角色内部。我试过这样

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' ] }

【问题讨论】:

  • req.body 对象长什么样子?
  • 感谢您的回复 我的 req.body 看起来像这样{ role_name: 'SA', view: [ 'dashboard', 'users', 'settings' ], add: 'users', 编辑:'用户',删除:['用户','设置']}
  • 我的代码已经更新了

标签: angularjs node.js mongodb mongoose roles


【解决方案1】:

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

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

在将其插入 mongoDB 之前,您需要改进变量 roleprivilege 的创建以处理这种情况。

您希望角色特权在打印时看起来像这样:

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

【讨论】:

  • 比你我解决了问题
猜你喜欢
  • 2020-03-27
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2013-04-29
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多