Создать модель и ассоциацию в Sequelize и Epilogue
Желаемое поведение
Используя Epilogue JS и Sequelize, у меня есть два ресурса, Student
а также Course
, которые имеют отношения m2m. Я хотел бы создать новый Student
и связать этот экземпляр студента с существующим курсом.
Эта проблема
Когда я POST
новый студент и включив информацию о курсе в полезную нагрузку, Epilogue/Sequelize попытается создать нового студента и создать новые курсы на основе вложенной полезной нагрузки. Это приведет к ошибке проверки, потому что эти курсы уже существуют.
Пример кода
const Student = db.define('student', {
id: Sequelize.UUID,
name: Sequelize.STRING
});
const Course = db.define('course', {
id: Sequelize.UUID,
name: Sequelize.STRING
});
Student.belongsToMany(Course, {through: 'student_courses'});
Course.belongsToMany(Student, {through: 'student_courses'});
const StudentResource = epilogue.resource({
model: Student,
endpoints: ['/student', '/student/:id'],
include: [{
model: Course
}];
});
Я хочу отправить нового студента и связать с существующим курсом, например:
// POST /users/
{
name: "Sally",
courses: [
{id: 123, name: "math"},
{id: 456, name: "science"}
]
}
Однако, Epilogue/Sequelize потерпит неудачу, потому что эти курсы уже существуют:
{
"message": "Validation error",
"errors": [
{
"field": "id",
"message": "id must be unique"
}
]
}
1 ответ
Не очень знакомый с тем, как работает эпилог, но, делая это исключительно через секвелиз, вы можете использовать set<Association>
методы
Нечто подобное
student = model.student.create(/*some properties*/)
student.setCourse(course_id)
Подробнее об этом в этом выпуске