Sequelize - получить только id всех экземпляров - PullRequest
0 голосов
/ 14 июля 2020

У меня 2 модели - Школа и Студент

Student.belongsTo(School);
School.hasMany(Student);

Из-за вышеупомянутой взаимосвязи у Студентов есть schoolId

Я пытаюсь использовать фейкер для массового посева в мои 'приложение'. Я могу использовать faker для генерации значений для свойств Student, кроме schoolId. Если у меня 5 школ, я хочу рандомизировать schoolId на основе существующих школ. Как мне достичь sh этого?

const schools = [
  {
    name: 'Baruch College',
    imageURL: 'test'
  },
  {
    name: 'MIT',
    imageURL: 'test'
  },
  {
    name: 'Pace University',
    imageURL: 'test'
  },
  {
    name: 'Columbia University',
    imageURL: 'test'
  },
  {
    name: 'School of Visual Arts',
    imageURL: 'test'
  }
]

const students = async function(){
  let list = [];

  const schools = School.findAll(); // get all schools, but how do I get an array of id only?

  for(i=0;i<20;i++){
    list.push({
      firstName: faker.name.firstName(),
      lastName: faker.name.lastName(),
      email: faker.internet.email(),
      gpa: faker.random.number({
        'min': 10,
        'max': 50
      }),
      schoolId: // Math.random school
    })
  }
  return list;
}

const seed = async () => {
  await sync();


  await Promise.all([schools, students()])
  .then(response => {
    response[0].map(school => School.create(school));
    response[1].map(student => Student.create(student));
  })
}
...