My question is similar to this question asked in 2016 which unfortunately does not have an accepted answer. I'm also unable to use the answer there to figure out how I need to accomplish the same.
I am basically trying to add a new item to an array in my data model.
My current data model (What I want) is like this:
{
teamId: 'team32',
teamName: 'Lions',
players: ['Jack','Ryan','Sam']
}
When a new team is created, an empty array is added for 'players'. There is no model for players. It is just an array which can hold a list of players.
How do I add a new player to the list of players (Add a string to the list)? I'm also open to storing it as an object instead of string.
My Team model
{
"name": "teams",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"teamID": {
"type": "string",
"required": true
},
"teamName": {
"type": "string",
"required": true
},
"players":{
"type":"array",
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
team.js
var updateQuery = {players:{$addToSet:{'Mark'}}};
team.update({teamID:'teams32'},updateQuery,
function(err,data){
console.log(err,data,'result');
});
$addToSet and $push have both worked for me with MongoDB with mongoose. But somehow don't seem to work on loopback. How do I go about this since $addToSet and $push are both not working for me in this case?
team.update( { "teamID": "teams32" }, { "$addToSet": { "properties.players": "Mark" }}, )