我有一个问题,更确切地说,我不了解monggose和关系中的一件事。
我有一个系列"运动员" :
var athletesSchema = mongoose.Schema({
name : String,
regionName : String,
age : Number,
overallScore : Number,
scores : {
ordinnal : String,
ordinnal2 : String,
ordinnal3: String,
ordinnal4: String,
ordinnal5:String
}
})
我有另一个系列" Regions"
var regionsSchema = mongoose.Schema({
name: String,
athletes: [{ type: Schema.Types.ObjectId, ref: 'Athletes' }]
})
一名运动员有一个地区,但一个地区有多名运动员。我不明白这是怎么可能的,当我创建一个运动员时,模特区域知道它是在这个区域还是在这个区域。
我有这个到我的server.js:
Athletes.find({name : datas.name}, function(err, name){
if(name == ""){
Athletes.create(datas, function(err, ath){
if(err || ath.name){
console.log(err)
}
Regions.create(regionName, function(err){
if(err){
console.log(err)
}
})
})
}
})
我在创建新用户之前检查,如果不在数据库中,是不是我创建了运动员,但我不知道如何在Region模型中建立他的区域。
答案 0 :(得分:0)
也许你会更容易扭转这一局面。区域只有名称。然后在Athlete模型上添加regionId:
region: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Regions',
index: true,
}
然后,每当您更新运动员时,您只需更新此运动员,对象。或者,处理数组并不那么简单。
使用此功能,您可以查询(和填充),例如来自特定地区的所有运动员:
Athletes.find({ region: [region1, region2]})
.populate('region')
现在,简化更新区域名称,您可以在一个地方进行,而不是在所有运动员实例上进行。
有更复杂的场景,您希望按各种标准查询事物,但大多数情况下,这将是最简单的方法。