En GraphQL Code First Approach, intento pasar el mismo argumento para createUser en createManyUser , pero quiero pasarlo como una matriz para crear muchos usuarios a la vez. Busqué mucho pero no pude encontrarlo en GraphQL Code First Approach.
El código
export const createUser = { type: userType, args: { // This work fine email: { type: string }, username: { type: string }, firstName: { type: string }, lastName: { type: string } }, resolve: async (_, args, { userAuth }) => { try { const user = await db.models.userModel.create(args); return user; } catch (error) { throw Error(`${error.message}`) } } } export const createManyUser = { type: new GraphQLList(userType), args: [{ // Here I made an array [] but it dose not work so here is my problem email: { type: string }, username: { type: string }, firstName: { type: string }, lastName: { type: string } }], resolve: async (_, args, { userAuth }) => { try { const user = await db.models.userModel.bulkCreate(args); return user; } catch (error) { throw Error(`${error.message}`) } } }No puede simplemente poner las opciones de argumentos en una matriz, para decirle a args que espera una lista de cosas que necesita explícitamente para construir un tipo GraphQLList .
Y tampoco puede hacer que un campo de mutación tome una lista de cosas con nombre; debe darle a la mutación un argumento con nombre que espera una lista de objetos de entrada. asi sera
export const createManyUser = { type: new GraphQLList(userType), args: { inputs: { type: new GraphQLList(new GraphQLNonNull(new GraphQLInputObjectType({ // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ name: 'CreateUserInput', description: 'Input payload for creating user', fields: { email: { type: string }, username: { type: string }, firstName: { type: string }, lastName: { type: string } } }))) }, resolve: async (_, args, { userAuth }) => { const user = await db.models.userModel.bulkCreate(args.inputs); // ^^^^^^^ return user; } }Véase también este artículo .