2017-01-26 130 views
1

我想從購物車中刪除,並在更改用戶配置文件數量的信息:這裏是結構:更新購物車對象

{ 
     "_id": "3YmDfDWMAaoeQHPAJ", 
     "profile": { 
     "name": "Armin", 
     "wish": [ 
      "FMXRAn3TEXCn6skSX", 
      "avRwogpGvJsKLLKfK", 
      "PJbRh68pwJrtnKe5c", 
      "mt2yqLecyTA2Ejd4n" 
     ], 
     "cart": { 
      "mt2yqLecyTA2Ejd4n": "1", 
      "xqwfyqasfcyTA2ajd": "3", 
      "xL438DBQrNJTJbPmH": "5" 
     } 
     }, 
     "username": "armin" 
    } 

我嘗試以下,但它會刪除整車推車

let item = $(event.target).data('id'); 
    Meteor.users.update(Meteor.userId(),{$unset: {"profile.cart": item}}); 

我的目標是能夠更新值1,3,5。也可以從購物車中刪除整個屬性。

+0

您可以在JavaScript中使用'刪除[屬性名]'刪除屬性;使用刪除關鍵字 – Agalo

+0

我試過 '刪除Meteor.user()。profile.cart [物品]' 但它dosnt工作流星我猜。 –

回答

1

要在車更新屬性的值,在下面的查詢使用$set運算符,如:

Meteor.users.update(
    Meteor.userId(), 
    {$set: {"profile.cart.xL438DBQrNJTJbPmH": "10"}} 
); 

要刪除購物車的屬性:

Meteor.users.update(
    Meteor.userId(), 
    {$unset: {"profile.cart.xL438DBQrNJTJbPmH": ""}} 
); 

在$指定的值未設置表達式(即「」)不會影響操作。

在當你擁有動態構造屬性名稱的情況下,你可以使用一個額外的變量:

var condition = {}; 
condition["profile.cart." + dynamicPart] = ""; 
Meteor.users.update(
    Meteor.userId(), 
    {$unset: condition} 
); 
+0

它工作得很好,當我使用確切''profile.cart.xL438DBQrNJTJbPmH「'。問題是我需要附加id像這樣'newItem =」profile.cart。「+ receivedId'然後使用它'{$ unset: {newItem:「」}} 在這種情況下,我得到一個Access拒絕控制檯日誌。 –

+0

更新:我認爲它通過在receivedId周圍添加[]來工作。 –

+1

@ArminMasoomi我已經更新了答案 –