需要在 mongodb 执行推送操作不起作用
Need to perform push operation in mongodb is not working
我有一些操作,它们是查看、编辑、删除、添加每个页面。
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' ] }
这里的问题是 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']
}
}
我有一些操作,它们是查看、编辑、删除、添加每个页面。
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' ] }
这里的问题是 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']
}
}