admin管理员组文章数量:1391987
I have the following List example:
{
"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"
}
And I want to remove the Map with: "entityId": "558da3de395b1aee2d6b7d2b"
.
I am thinking an UpdateItem query, I have looked at REMOVE expression documentation (.Modifying.html), but I can't seem to see any examples, beyond removing items from a List by index value....
I have the following List example:
{
"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"
}
And I want to remove the Map with: "entityId": "558da3de395b1aee2d6b7d2b"
.
I am thinking an UpdateItem query, I have looked at REMOVE expression documentation (http://docs.aws.amazon./amazondynamodb/latest/developerguide/Expressions.Modifying.html), but I can't seem to see any examples, beyond removing items from a List by index value....
Share Improve this question asked Dec 2, 2015 at 19:45 Victor SVictor S 5,1425 gold badges46 silver badges63 bronze badges 2- I am facing similar issue. Did you figure out a solution for this? – ferrari16 Commented Apr 5, 2017 at 19:12
- Ditto. I'm having trouble as well. – ephemeralCoder Commented Apr 11, 2017 at 17:39
3 Answers
Reset to default 2I've run into this issue a few times now, and unfortunately there's no straightforward solution. The two most mon workarounds I've e across are:
A. use a map instead of a list, you can reference the favorite directly in your update expression now using #favorites.#entityId
. If order is important, add an order attribute to each map. In your data access layer is where you would need to do your conversions to/from the desired array type.
{
"userId": "2",
"favorites": {
"558da3de395b1aee2d6b7d2b": {
"createdAt": 1448998673852,
"entityId": "558da3de395b1aee2d6b7d2b",
"type": "media",
},
// ... more entities here
}
}
B. use one-to-many tables instead, see http://docs.aws.amazon./amazondynamodb/latest/developerguide/GuidelinesForItems.html
I have done this before in Python using the Boto3 library but not in Javascript. I have a link to the Javascript delete item function. What I did in Python was that I queried my table for the item(s) and make a list of the primary keys of the objects I wanted deleted and called the delete function.
You should be de serializing the object into something you can work with, modifying it to remove that entry, then using update-item to save the changes.
I'm not a node.js user, but how did you create the object in the first place? Are you hand crafting the json string? If so you shouldn't be. There are libraries to handle json, and making it easy for you to modify them, and then get the resulting json string with the changes.
How to parse JSON using Node.js?
本文标签:
版权声明:本文标题:javascript - How do I delete from DynamoDB List of Maps, by Map attribute value in said List? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744713061a2621239.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论