【发布时间】:2018-08-06 09:30:49
【问题描述】:
我的问题与this question asked in 2016 类似,但遗憾的是没有公认的答案。我也无法使用那里的答案来弄清楚我需要如何完成同样的事情。
我基本上是在尝试向我的数据模型中的数组添加一个新项目。
我当前的数据模型(我想要的)是这样的:
{
teamId: 'team32',
teamName: 'Lions',
players: ['Jack','Ryan','Sam']
}
创建新团队时,会为“玩家”添加一个空数组。没有适合玩家的模型。它只是一个可以保存玩家列表的数组。
如何将新玩家添加到玩家列表(将字符串添加到列表)?我也愿意将其存储为对象而不是字符串。
我的团队模型
{
"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 和 $push 都对我使用 MongoDB 和 mongoose 有效。但不知何故似乎不适用于环回。由于在这种情况下 $addToSet 和 $push 都不适合我,我该怎么做?
【问题讨论】:
-
试试这个
team.update( { "teamID": "teams32" }, { "$addToSet": { "properties.players": "Mark" }}, ) -
@AnthonyWinzlet 我试过了。但同样的结果。 {"$addToSet":{"properties.players":"Mark"}} 对象被添加到玩家字段,而不是添加到列表中。在此操作之后,我也对数据类型如何从数组切换到对象感到困惑。
标签: node.js mongodb mongodb-query loopbackjs