2017-04-05 111 views
-1

我有一个猫鼬的数据是这样的:更新数据与Moongoose和平均堆栈

{ 
    "_id" : ObjectId("58e394cacaa6512ed00e8d83"), 
    "RoleName" : "Manager", 
    "UIList" : [ 
     { 
      "Edit" : false, 
      "View" : false, 
      "UiName" : "ElevatorMapping" 
     }, 
     { 
      "Edit" : false, 
      "View" : false, 
      "UiName" : "ElevatorAssumptions" 
     }, 
     { 
      "Edit" : false, 
      "View" : false, 
      "UiName" : "ManageUnits" 
     }, 
     { 
      "Edit" : false, 
      "View" : false, 
      "UiName" : "ManageBuildings" 
     } 
    ], 
    "__v" : 0, 
    "Description" : "fd", 
    "IsActive" : true 
} 

现在我想更新内部UIname UILIST:“ElevatorMapping” &“电梯假设”查看和编辑为真。如何为此编写查询?我尝试了下面的东西。

这是我的控制器页面。

$http.put('/ViewEditupdate/' + id +'/' + uiname + '/' + view + '/' + edit).then(function (response) { 

        refresh(); 
       }) 

这里采用的是正确的id值,但不会采用编辑视图UI名称。编辑,视图名称被视为未定义。

我server.js代码

app.put('/ViewEditupdate/:id/:uiname/:view/:edit', RoleEntrypath.RoleViewEditupdate); 

我的架构代码

newRole.update({ "UIList.UiName": "ManageRole" }, { "$push": { "UIList.$.View": "true", "UIList.$.Edit": "true" } }, 
    function (err, doc) { 

     res.json(doc); 
    } 
    ); 

谁能给解决?

+0

跟进您的问题非常困难。你为什么不试着用简单的话来说呢? –

+0

HI ankit,我已更新我的问题 – Vinoth

+0

您可以在您的put API中打印所有参数值吗?首先,让我们来看看你是否正在接受正确的价值观。如果你正在接收正确的值,那么问题可能是'update'查询。 –

回答

0

我已经使用这个查询更新。

newRole.update 
     (
     { 
     _id: id, 
     "UIList.UiName": "ManageRole" 
    }, 
       { 
        $set: { 
         "UIList.$.View": "true", 
         "UIList.$.Edit": "true" 
        } 
       }, 
    function (err, doc) { 

     res.json(doc); 
    } 
    ); 
+2

这与我给出的答案完全相同。你应该把我的答案标记为正确的答案,我解决了你的代码问题。 –

+0

:@ravi Shankar:我在一天之前完成了这个查询。所以我不会标记为你的答案。你的答案中没有提到你的id名字 – Vinoth

1

你应该使用的,而不是$set$pushview值从false改为true

试试这个:

newRole.update({ 
    "UIList.UiName": "ManageRole" 
},{ 
    $set: { "UIList.$.View": "true", "UIList.$.Edit": "true" } 
},function (err, doc) { 
    res.json(doc); 
});