【发布时间】:2021-06-14 19:57:15
【问题描述】:
我正在为一位朋友创建一个英雄联盟锦标赛网站,并且对于每场锦标赛(存储在 mongodb 的数据库中)都有一个想要参加锦标赛的玩家“预制”列表。
我正在使用 node.js 上的 mongoose 模块来管理我的数据库
这是我的模型:
const tournamentSchema = mongoose.Schema({
name: {
type:String,
required:true,
trim: true
},
beginningDate: Date,
endingDate: Date,
creatorName: {
type:String,
required:true,
lowercase: true,
trim: true
},
maxPlayers:Number,
maxPlayersPerTeam:Number,
playersList:Array,
waitingPlayers:Array,
needLoggin:{
type:Boolean,
default:false
},
description:String
});
例如,“playersList”将是:
playersList:[
{
name:"group1",
players:[
{
name:"player1",
elo:"rank on the game"
},
{
name:"player2",
elo:"rank on the game"
}
]
},
{
name:"group2",
players:[
{
name:"player3",
elo:"rank on the game"
},
{
name:"player4",
elo:"rank on the game"
}
]
}
]
我正在尝试找到如何删除
{
name:"player4",
elo:"rank on the game"
}
以第 2 组为例。我尝试使用 splice() 就像它是一个普通数组一样,它更新了对象但在数据库中什么也没做。我还尝试了锦标赛更新,它返回了一个错误,我看不出我的错误是什么......
var collection = Rtournament.players;
Rtournament.updateOne({'players.players.name':collection[i].players[j].name},{$pull:{'players.$.players':{'name':name}}},()=>{});
所以我想知道一个简单的方法来删除它(因为我确定我的代码真的错了)
非常感谢您对我的帮助,并为我糟糕的英语感到抱歉
【问题讨论】:
-
你得到的错误是什么?请出示您的完整陈述。
-
几个小时前我删除了这部分代码,因为我找不到如何使它工作,但错误是“无法在元素(我的数组)中创建字段'名称'”和 myarray是我根据我在示例中给出的相同模型创建的测试数组
-
您既没有提供代码,也没有提供错误信息——您怎么能指望别人的帮助?
-
对不起,我是新来的,我正在尽我所能澄清;(我只是想知道如何删除 player4,因为我确信我的代码是错误的,并且我没有正确使用更新方法...
-
``` Rtournament.updateOne({'players.players.name':collection[i].players[j].name},{$pull:{'players.$.players': {'name':name}}},()=>{}); ``` 带有集合:“var collection = Rtournament.players;”
标签: javascript node.js database mongodb mongoose