Introducción #
Una vez se tenga el schema definido, el resolver, y el servidor configurado y conectado con MongoDB es momento de probarlo. En el artículo donde se explica como configurar el servidor se indica que para acceder al sandbox para probar el servidor hay que ir a la siguiente URL:
http://localhost:3000/api/graphql
El puerto 3000 es porque estamos usando NextJS para las pruebas.
Estado inicial MongoDB #
La foto inicial que tenemos en MongoDB es la siguiente:
No hay nada creado.
Realizando la primera consulta #
Desde Apollo studio te guarda lo último que has hecho y ejecutado pero creo que la primera te sale directamente en la operaciones de Query, por ello para no liarse lo mejor es desmarca todo y tener esta imagen inicial:
No voy a entrar mucho en detalle porque la página es bastante intuitiva pero para los avezados pueden escribir directamente las consultas en la Operations, pero yo uso el asistente. El asistente consiste en utilizar este icono para ir añadiendo campos o las operaciones que deseamos. En este caso vamos a darle al icono al lado de Query con lo que nos aparecerá lo siguiente:
Ahora si damos al icono de añadir al lado de getAll se nos añadirá la opción:
Ahora solo falta añadir los campos de nuevo con el icono de añadir. Donde nos quedará lo siguiente:
El paso final es ejecutar la query:
Inserción simple #
Vamos aprovechar que se pueden crear pestaña con este icono: para añadir la mutation newProduct:
Por defecto en los parámetros nos ha colocado el campo mueble porque en el schema lo hemos definido como obligatorio. En el panel de la izquierda tenemos dos secciones: Arguments y Fields. La primera son los parámetros de entrada del mutation, y el segundo son los campos de salida una vez el registro se haya insertado (es como lo que hemos hecho en la query). Si añadimos todos los campos necesarios tenemos lo siguiente:
Ahora falta añadir los valores. Los valores se pueden añadir, o bien, en la pestaña de Variables, o bien, en la propia consulta. Lo vamos hacer de las dos maneras para verlas. La primera es través de las Variables
{
"mueble": "mesa",
"material": "madera"
}
Al pulsar el botón de ejecutar tendremos el siguiente resultado:
Si lo hacemos directamente en la mutation lo que hago es quitar el contenido en la pestaña de Variables y poner lo siguiente en la propia consulta:
mutation Mutation($mueble: String!, $material: String) {
newProduct(mueble: "silla", material: "plastico") {
mueble
material
}
}
Al ejecutar la consulta obtendremos el siguiente resultado:
Ahora, si volvemos a la pestaña donde tenemos la consulta y la ejecutamos veremos los dos registros insertados:
Inserción con subdocumentos #
Ahora vamos a realizar una inserción con subdocumentos. Es decir, vamos a llamar al método newCompleteProduct para ver su funcionamiento. Para la llamada vamos a usar las variables para el paso del parámetro. La llamada sería esta:
La verdad es que con el asistente es muy sencilla probar este tipo de servicios porque te va construyendo los niveles que quieres utilizar.