2015-12-02 25 views
10

Tôi có danh sách ví dụ sau:Làm cách nào để xóa khỏi Danh sách Bản đồ DynamoDB, theo giá trị thuộc tính Bản đồ trong Danh sách được nói?

{ 
    "favorites": [ 
    { 
     "createdAt": 1448998673852, 
     "entityId": "558da3de395b1aee2d6b7d2b", 
     "type": "media" 
    }, 
    { 
     "createdAt": 1448998789252, 
     "entityId": "558da3de395b1aee2d6b7d83", 
     "type": "media" 
    }, 
    { 
     "createdAt": 1448998793729, 
     "entityId": "558da3de395b1aee2d6b7d99", 
     "type": "media" 
    }, 
    { 
     "createdAt": 1448998813023, 
     "entityId": "558da3de395b1aee2d6b7daf", 
     "type": "media" 
    } 
    ], 
    "userId": "2" 
} 

Và tôi muốn loại bỏ các Map với: "entityId": "558da3de395b1aee2d6b7d2b".

Tôi đang nghĩ đến một truy vấn UpdateItem, tôi đã xem xét tài liệu biểu Remove (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html), nhưng tôi dường như không thể nhìn thấy bất kỳ ví dụ, ngoài việc loại bỏ các mục từ một danh sách theo giá trị chỉ số ....

+0

Tôi đang gặp phải sự cố tương tự. Bạn đã tìm ra giải pháp cho điều này? –

+0

Ditto. Tôi cũng đang gặp rắc rối. – ephemeralCoder

Trả lời

-1

Bạn nên de serializing các đối tượng vào một cái gì đó bạn có thể làm việc với, sửa đổi nó để loại bỏ mục đó, sau đó sử dụng cập nhật-mục để lưu các thay đổi.

Tôi không phải là người dùng node.js, nhưng làm cách nào bạn tạo đối tượng ở nơi đầu tiên? Bạn có tay crafting chuỗi json? Nếu vậy bạn không nên. Có các thư viện để xử lý json, và làm cho nó dễ dàng cho bạn để sửa đổi chúng, và sau đó nhận được kết quả chuỗi json với các thay đổi.

How to parse JSON using Node.js?

+1

Vấn đề với cách tiếp cận được đề xuất ở đây là nó không phải là nguyên tử. Nếu hai khách hàng đọc mục này cùng một lúc, khi cả hai đều ghi lại mục đó, một trong những thay đổi sẽ bị mất. – sheldonh

+0

Điều đó không trả lời câu hỏi về việc xóa mục khỏi danh sách trong DynamoDB bằng một đặc tính khác ngoài vị trí trong danh sách. – Juriy

1

tôi đã chạy vào vấn đề này một vài lần bây giờ, và tiếc là không có giải pháp đơn giản. Hai cách giải quyết phổ biến nhất mà tôi gặp phải là:

A. sử dụng bản đồ thay vì danh sách, bạn có thể tham chiếu trực tiếp yêu thích trong biểu thức cập nhật của mình bằng cách sử dụng #favorites.#entityId. Nếu thứ tự quan trọng, hãy thêm thuộc tính thứ tự vào mỗi bản đồ. Trong lớp truy cập dữ liệu của bạn là nơi bạn sẽ cần phải thực hiện chuyển đổi của mình đến/từ loại mảng mong muốn.

{ 
    "userId": "2", 
    "favorites": { 
    "558da3de395b1aee2d6b7d2b": { 
     "createdAt": 1448998673852, 
     "entityId": "558da3de395b1aee2d6b7d2b", 
     "type": "media", 
    }, 
    // ... more entities here 
    } 
} 

B. sử dụng một-nhiều bảng thay vào đó, thấy http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForItems.html

0

Tôi đã làm điều này trước đây trong Python sử dụng thư viện Boto3 nhưng không phải trong Javascript. Tôi có một hàm link đến chức năng xóa mục Javascript. Những gì tôi đã làm trong Python là tôi queried bảng của tôi cho (các) mục và tạo danh sách các khóa chính của các đối tượng mà tôi muốn xóa và được gọi là chức năng xóa.

Các vấn đề liên quan