繁体   English   中英

猫鼬的关系一对多

[英]Mongoose relationship multiple to one

我有一个问题,更确切地说,我对mon昧和关系一无所知。

我有一个“运动员”收藏:

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模型中设置他的区域。

也许您更容易扭转这种情况。 具有仅具有名称的区域。 然后在运动员模型上添加regionId:

region: {
  type: mongoose.Schema.Types.ObjectId,
  ref: 'Regions',
  index: true,
}

然后,无论何时更新运动员,您都只在更新运动员,对象。 另外,处理数组也不是那么简单。

您可以使用此查询(并填充),例如来自给定区域的所有运动员:

Athletes.find({ region: [region1, region2]})
  .populate('region')

现在,简化了区域名称的更新,您可以在一个地方而不是在所有运动员实例上进行。

在更复杂的场景中,您希望通过各种条件查询事物,但是在大多数情况下,这是最简单的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM