#sequelize.js
Вопрос:
Я пытаюсь понять, как вставить несколько связанных записей с помощью Sequelize.
Я могу проиллюстрировать, чего я пытаюсь достичь, показав эту мутацию:
mutation {
createUser( input : {
name: "John"
projectTitle: "Car"
projectSize: "5"
})
}
Если я хочу создать несколько записей (проектов), связанных с «Джоном» в одной и той же мутации, как я могу это сделать? Я думал, что смогу сделать что-то вроде:
mutation {
createUser( input : {
name: "John"
projects: [{
projectTitle: "Project1"
projectSize: "5"
},
{
projectTitle: "Project2"
projectSize: "15"
}]
})
}
Но, конечно, «проекты» не определены. Вот псевдокод, есть идеи о том, как воспроизвести предыдущую мутацию?
var User = sequelize.define('user', {
id: { type: Sequelize.INTEGER, primaryKey: true},
name: Sequelize.STRING,
})
var Project = sequelize.define('project', {
id: { type: Sequelize.INTEGER, primaryKey: true},
title: Sequelize.STRING,
})
Project.belongsTo(User, {foreignKey: 'user_id'})
User.hasMany(Project)
Схема:
type User {
id: Int!
name: String
projects: [Project]
}
type Project {
id: Int!
title: String
size: String
}
input CreateUser {
name: String
projectTitle: String
projectSize: String
}
Вот решатель для мутации:
Mutation: {
createUser: async (parent, { input }, { models }, info) => {
const user = await models.User.create({
name: input.name,
projects: [{
title: input.projectTitle
size: input.projectSize
}]
},
{
include: [
{ model: models.Project,
as: "projects",
}
]
})