Estoy tratando de crear una operación de eliminación. Tengo un usuario y tareas que hacer. Cada usuario tiene una lista de tareas asignadas. Aquí está mi código de operación de eliminación:
const Mutation = new GraphQLObjectType({ name: 'Mutation', fields: { deleteUser: { type: UserType, args: { id: { type: new GraphQLNonNull(GraphQLID) } }, resolve(parent, args){ var id = (args.id).toString() let todos = Todo.find({ user_id: id }); let user = User.findById(args.id); todos.remove(); user.findOneAndRemove(); return todos; } } } })Y aquí están mis tipos definidos:
const ToDoType = new GraphQLObjectType({ name: 'todoItem', fields: () => ({ id: {type: GraphQLID}, title: {type: GraphQLString}, completed: {type: GraphQLBoolean}, user: { type: UserType, resolve(parent, args){ return User.findById(parent.user_id); } } }) }); const UserType = new GraphQLObjectType({ name: 'user', fields: () => ({ id: {type: GraphQLID}, name: {type: GraphQLString}, email: {type: GraphQLString}, login: {type: GraphQLString}, todos: { type: new GraphQLList(ToDoType), resolve(parent, args){ return Todo.find({ user_id: parent.id }) } } }) });El problema es que mientras elimino al usuario, quiero eliminar todas sus "cosas por hacer", pero de acuerdo con lo que puse a cambio, solo puedo eliminar una cosa... Así que ahora tengo "devolver todas" y elimina solo las tareas asignadas al usuario, pero no el usuario. Cuando coloco allí "usuario de retorno", eliminará solo al usuario sin sus tareas. ¿Cómo puedo eliminar el usuario y sus tareas a la vez?
El código que se muestra parece mutar los datos para eliminar tanto al usuario como a todos sus todos. Creo que la confusión que tiene es que la operación de mutación tiene el "tipo" (es decir, lo que devolverá) de User . Por lo tanto, eso es lo que necesitarías para regresar de la función de mutación.
Más conceptualmente, podría ser una buena idea regresar tanto al usuario como a todos sus datos, de modo que si el usuario de la API quisiera capturar algo o todo eso, podría hacerlo, aunque dadas las implicaciones de privacidad que podrían no ser ideales. Un enfoque alternativo sería hacer que la mutación solo devuelva un estado de éxito o fracaso.