Estoy tratando de eliminar del carrito de compras y cambiar la información de cantidad en el perfil de usuario: aquí está la estructura:
{ "_id": "3YmDfDWMAaoeQHPAJ", "profile": { "name": "Armin", "wish": [ "FMXRAn3TEXCn6skSX", "avRwogpGvJsKLLKfK", "PJbRh68pwJrtnKe5c", "mt2yqLecyTA2Ejd4n" ], "cart": { "mt2yqLecyTA2Ejd4n": "1", "xqwfyqasfcyTA2ajd": "3", "xL438DBQrNJTJbPmH": "5" } }, "username": "armin" }Intenté lo siguiente pero eliminará todo el carrito
let item = $(event.target).data('id'); Meteor.users.update(Meteor.userId(),{$unset: {"profile.cart": item}});Mi objetivo es poder actualizar el valor 1,3,5. y también poder eliminar una propiedad completa del carrito.
Para actualizar el valor de un atributo en el carrito, use el operador $set como en la siguiente consulta:
Meteor.users.update( Meteor.userId(), {$set: {"profile.cart.xL438DBQrNJTJbPmH": "10"}} );Para eliminar un atributo en el carrito:
Meteor.users.update( Meteor.userId(), {$unset: {"profile.cart.xL438DBQrNJTJbPmH": ""}} );El valor especificado en la expresión $unset (es decir, "") no afecta la operación.
En el caso de que tenga que construir el nombre del atributo dinámicamente, puede usar una variable adicional:
var condition = {}; condition["profile.cart." + dynamicPart] = ""; Meteor.users.update( Meteor.userId(), {$unset: condition} );