2017-04-05 49 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); 
});