Android
Data objects
Consultas Relacionales en Android con Back4App y Parse
9 min
consultas relacionales en android introducción en esta guía, realizarás consultas relacionales en parse e implementarás una aplicación de android utilizando estas consultas aprenderás cómo configurar y consultar datos realistas utilizando back4app y android este tutorial utiliza una aplicación creada en android studio arctic fox 2020 3 1 con compilesdk = 30 compilesdk = 30 , minsdk = 23 minsdk = 23 y targetsdk = 30 targetsdk = 30 en cualquier momento, puedes acceder al proyecto android completo construido con este tutorial en nuestros repositorios de github repositorio de ejemplo en kotlin repositorio de ejemplo en java objetivo nuestro objetivo es consultar datos almacenados en back4app back4app desde una aplicación android aplicación android aquí hay una vista previa de lo que vamos a lograr requisitos previos para completar este tutorial, necesitamos android studio una aplicación creada en back4app nota sigue el tutorial de nueva aplicación parse para aprender cómo crear una aplicación parse en back4app una aplicación de android conectada a back4app nota sigue el tutorial de instalación del sdk de parse para crear un proyecto de android studio conectado a back4app un dispositivo (o dispositivo virtual ) que ejecute android 4 1 (jelly bean) o superior ¡comencemos! antes de los siguientes pasos, necesitamos conectar back4app back4app a nuestra aplicación debes guardar el appid appid y clientkey clientkey del back4app back4app al archivo string xml string xml y luego inicializa parse parse en nuestro app java app java o app kt app kt archivo sigue el nuevo tutorial de parse app si no sabes cómo inicializar parse parse en tu aplicación o puedes descargar los proyectos que compartimos en los enlaces de github arriba y editar solo las partes de appid appid y clientkey clientkey de acuerdo a ti en cualquier momento, puedes acceder al proyecto android completo construido con este tutorial en nuestros repositorios de github repositorio de ejemplo en kotlin repositorio de ejemplo en java 1 guarda algunos datos en back4app en este paso, crearemos una clase con la consola js y los códigos de javascript proporcionados por parse parse y crearemos consultas para esta clase creamos una variedad de clases, que serán el objetivo de nuestras consultas en esta guía las clases son autor autor , libro libro , editorial editorial y librería librería , en la cual libro libro tiene una relación 1\ n con editorial editorial y n\ n con autor autor , y librería librería tiene una relación n\ n con libro libro en la consola js de parse es posible ejecutar código javascript directamente, consultando y actualizando el contenido de la base de datos de tu aplicación utilizando los comandos del sdk de js ejecuta el código a continuación desde tu consola js e inserta los datos en back4app así es como se ve la consola js en tu panel adelante y crea las clases con el siguiente contenido de ejemplo 1 // add objects and create tables 2 // authors 3 const authora = new parse object('author'); 4 authora set('name', 'aaron writer'); 5 await authora save(); 6 7 const authorb = new parse object('author'); 8 authorb set('name', 'beatrice novelist'); 9 await authorb save(); 10 11 const authorc = new parse object('author'); 12 authorc set('name', 'casey columnist'); 13 await authorc save(); 14 15 // publishers 16 const publishera = new parse object('publisher'); 17 publishera set('name', 'acacia publishings'); 18 await publishera save(); 19 20 const publisherb = new parse object('publisher'); 21 publisherb set('name', 'birch distributions'); 22 await publisherb save(); 23 24 // books 25 const booka = new parse object('book'); 26 booka set('title', 'a love story'); 27 booka set('publisher', publishera); 28 booka set('publishingdate', new date('05/07/1998')); 29 const bookarelation = booka relation("authors"); 30 bookarelation add(authora); 31 await booka save(); 32 33 const bookb = new parse object('book'); 34 bookb set('title', 'benevolent elves'); 35 bookb set('publisher', publisherb); 36 bookb set('publishingdate', new date('11/31/2008')); 37 const bookbrelation = bookb relation("authors"); 38 bookbrelation add(authorb); 39 await bookb save(); 40 41 const bookc = new parse object('book'); 42 bookc set('title', 'can you believe it?'); 43 bookc set('publisher', publisherb); 44 bookc set('publishingdate', new date('08/21/2018')); 45 const bookcrelation = bookc relation("authors"); 46 bookcrelation add(authora); 47 bookcrelation add(authorc); 48 await bookc save(); 49 50 // bookstore 51 const bookstorea = new parse object('bookstore'); 52 bookstorea set('name', 'books of love'); 53 const bookstorearelation = bookstorea relation("books"); 54 bookstorearelation add(booka); 55 await bookstorea save(); 56 57 const bookstoreb = new parse object('bookstore'); 58 bookstoreb set('name', 'fantasy books'); 59 const bookstorebrelation = bookstoreb relation("books"); 60 bookstorebrelation add(bookb); 61 await bookstoreb save(); 62 63 const bookstorec = new parse object('bookstore'); 64 bookstorec set('name', 'general books'); 65 const bookstorecrelation = bookstorec relation("books"); 66 bookstorecrelation add(booka); 67 bookstorecrelation add(bookc); 68 await bookstorec save(); 69 70 console log('success'); 2 consultar los datos desde la aplicación de android ahora que has poblado todas las clases, ahora podemos realizar algunas consultas relacionales en ellas comencemos filtrando libros libros resultados por el editor, buscando los que pertenecen a la editorial editorial “acacia publishings” (o “editorial a”) utilizando el método básico parsequery equalto parsequery equalto 1 progressdialog show(); 2 parsequery\<parseobject> publisherquery = new parsequery<>("publisher"); 3 publisherquery whereequalto("name", "acacia publishings"); 4 try { 5 parseobject publisher = publisherquery getfirst(); 6 parsequery\<parseobject> bookquery = new parsequery\<parseobject>("book"); 7 bookquery whereequalto("publisher", publisher); 8 bookquery findinbackground((objects, e) > { 9 progressdialog hide(); 10 if (e == null) { 11 initdata(objects); 12 } else { 13 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 14 } 15 }); 16 } catch (parseexception e) { 17 progressdialog hide(); 18 e printstacktrace(); 19 }1 progressdialog? show() 2 val publisherquery = parsequery\<parseobject>("publisher") 3 publisherquery whereequalto("name", "acacia publishings") 4 try { 5 val publisher = publisherquery first 6 val bookquery = parsequery\<parseobject>("book") 7 bookquery whereequalto("publisher", publisher) 8 bookquery findinbackground { objects list\<parseobject>?, e parseexception? > 9 progressdialog? hide() 10 if (e == null) { 11 initdata(objects!!) 12 } else { 13 toast maketext(this, e localizedmessage, toast length short) show() 14 } 15 } 16 } catch (e parseexception) { 17 progressdialog? hide() 18 e printstacktrace() 19 } ahora consultemos qué bookstore bookstore objetos contienen book book objetos con fecha de publicación mayor a 01/01/2010, utilizando una consulta interna con el parsequery wheregreaterthan parsequery wheregreaterthan método y luego el parsequery wherematchesquery parsequery wherematchesquery método 1 progressdialog show(); 2 parsequery\<parseobject> bookquery = new parsequery<>("book"); 3 4 calendar calendar = calendar getinstance(); 5 calendar set(2010,1,1,59,59,59); 6 date date = calendar gettime(); 7 8 bookquery wheregreaterthan("publishingdate", date); 9 10 parsequery\<parseobject> bookstorequery = new parsequery<>("bookstore"); 11 bookstorequery wherematchesquery("books",bookquery); 12 bookstorequery findinbackground((objects, e) > { 13 progressdialog hide(); 14 if (e==null){ 15 initdata(objects); 16 } else { 17 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 18 } 19 });1 progressdialog? show() 2 val bookquery = parsequery\<parseobject>("book") 3 val calendar = calendar getinstance() 4 calendar\[2010, 1, 1, 59, 59] = 59 5 val date = calendar time 6 bookquery wheregreaterthan("publishingdate", date) 7 val bookstorequery = parsequery\<parseobject>("bookstore") 8 bookstorequery wherematchesquery("books", bookquery) 9 bookstorequery findinbackground { objects list\<parseobject>?, e parseexception? > 10 progressdialog? hide() 11 if (e == null) { 12 initdata(objects!!) 13 } else { 14 toast maketext(this, e localizedmessage, toast length short) show() 15 } 16 } ahora vamos a crear una consulta relacional más compleja, buscando objetos de bookstore bookstore que tengan al menos un book book escrito por author author “aaron writer” (o “authora”), utilizando whereequalto whereequalto y wherematchesquery wherematchesquery 1 progressdialog show(); 2 parsequery\<parseobject> authorquery = new parsequery<>("author"); 3 authorquery whereequalto("name","aaron writer"); 4 try { 5 parseobject authora = authorquery getfirst(); 6 parsequery\<parseobject> bookquery = new parsequery<>("book"); 7 bookquery whereequalto("authors",authora); 8 9 parsequery\<parseobject> bookstorequery = new parsequery<>("bookstore"); 10 bookstorequery wherematchesquery("books",bookquery); 11 12 bookstorequery findinbackground((objects, e) > { 13 progressdialog hide(); 14 if (e==null){ 15 initdata(objects); 16 } else { 17 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 18 } 19 }); 20 21 22 } catch (parseexception e) { 23 progressdialog hide(); 24 e printstacktrace(); 25 }1 progressdialog? show() 2 val authorquery = parsequery\<parseobject>("author") 3 authorquery whereequalto("name", "aaron writer") 4 try { 5 val authora = authorquery first 6 val bookquery = parsequery\<parseobject>("book") 7 bookquery whereequalto("authors", authora) 8 val bookstorequery = parsequery\<parseobject>("bookstore") 9 bookstorequery wherematchesquery("books", bookquery) 10 bookstorequery findinbackground { objects list\<parseobject>?, e parseexception? > 11 progressdialog? hide() 12 if (e == null) { 13 initdata(objects!!) 14 } else { 15 toast maketext(this, e localizedmessage, toast length short) show() 16 } 17 } 18 } catch (e parseexception) { 19 progressdialog? hide() 20 e printstacktrace() 21 } ¡está hecho! al final de esta guía, aprendiste cómo funcionan las consultas relacionales en parse y cómo realizarlas en back4app desde una aplicación de android