Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

mongoose 如何保存一对多关联

$
0
0

目前我是这么存的,team collection

{ 
    "_id" : ObjectId("5a9a9b33c68fa11f9cc60288"), 
    "name" : "WE", 
    "players" : [
        ObjectId("5a9a9b33c68fa11f9cc60289"), 
        ObjectId("5a9a9b33c68fa11f9cc6028a"), 
        ObjectId("5a9a9b33c68fa11f9cc6028b"), 
        ObjectId("5a9a9b33c68fa11f9cc6028c"), 
        ObjectId("5a9a9b33c68fa11f9cc6028d")
    ], 
    "__v" : NumberInt(0)
}

model是

module.exports = mongoose.model('Teams', new Schema({
  name: String,
  players: [{
    type: Schema.Types.ObjectId,
    ref: 'Players'
  }]
}));

一个战队下面有很多队员,我创建team的时候怎么插入player呢 如下代码不行:

function loadTeamPlayerData() {
  const data = require('../mockdata/players');
  data.forEach(item => {

    let playerIds = [];
    
    item.players.forEach((player, index) => {
      let playerModel = new Player({name: player.name})
      playerModel.save(() => {
        playerIds.push(new ObjectId(playerModel._id))
        // teamModel.players.push(playerModel._id)
      })
    })
    
    let teamModel = new Team({name: item.team, players: playerIds})

    teamModel.save().then(() => {
      console.log('load team: %s', item.team)
      console.log(playerIds)
    })
  })
}

假数据 data/player.js

  {
    team: 'WE',
    players: [
      {
        name: 'xiye'
      },
      {
        name: 'Mystic'
      },
      {
        name: 'Condi'
      },
      {
        name: 'Zero'
      },
      {
        name: '957'
      }
    ]
  }]

Viewing all articles
Browse latest Browse all 14821

Trending Articles