Android
Data objects
การใช้การค้นหาเชิงสัมพันธ์ในแอนดรอยด์ด้วย Parse
8 นาที
การค้นหาข้อมูลเชิงสัมพันธ์บน android บทนำ ในคู่มือนี้ คุณจะทำการค้นหาข้อมูลเชิงสัมพันธ์ใน parse และพัฒนาแอป android โดยใช้การค้นหาเหล่านี้ คุณจะได้เรียนรู้วิธีการตั้งค่าและค้นหาข้อมูลที่สมจริงโดยใช้ back4app และ android บทเรียนนี้ใช้แอปที่สร้างขึ้นใน android studio arctic fox 2020 3 1 โดยมี compilesdk = 30 compilesdk = 30 , minsdk = 23 minsdk = 23 และ targetsdk = 30 targetsdk = 30 ในทุกช่วงเวลา คุณสามารถเข้าถึงโปรเจกต์ android ที่สร้างขึ้นจากบทเรียนนี้ได้ที่ที่เก็บ github ของเรา ที่เก็บตัวอย่าง kotlin ที่เก็บตัวอย่าง java เป้าหมาย เป้าหมายของเราคือการค้นหาข้อมูลที่เก็บไว้บน back4app back4app จากแอป android android นี่คือภาพรวมของสิ่งที่เราจะทำให้สำเร็จ ข้อกำหนดเบื้องต้น ในการทำตามบทเรียนนี้ เราต้องการ android studio แอปที่สร้างขึ้นบน back4app หมายเหตุ ติดตาม บทเรียนการสร้าง parse app ใหม่ เพื่อเรียนรู้วิธีการสร้าง parse app บน back4app แอป android ที่เชื่อมต่อกับ back4app หมายเหตุ ติดตาม บทเรียนการติดตั้ง parse sdk เพื่อสร้างโปรเจกต์ android studio ที่เชื่อมต่อกับ back4app อุปกรณ์ (หรือ อุปกรณ์เสมือน ) ที่รัน android 4 1 (jelly bean) หรือใหม่กว่า เริ่มกันเลย! ก่อนที่จะดำเนินการต่อ เราต้องเชื่อมต่อ back4app back4app กับแอปพลิเคชันของเรา คุณควรบันทึก appid appid และ clientkey clientkey จาก back4app back4app ไปยัง string xml string xml ไฟล์และจากนั้นเริ่มต้น parse parse ใน app java app java หรือ app kt app kt ไฟล์。 ติดตาม บทเรียนการสร้างแอป parse ใหม่ หากคุณไม่รู้ว่าจะเริ่มต้น parse parse ในแอปของคุณอย่างไร หรือคุณสามารถดาวน์โหลดโปรเจกต์ที่เราแชร์ลิงก์ github ข้างต้นและแก้ไขเฉพาะ appid appid และ clientkey clientkey ตามที่คุณต้องการ ในทุกเวลา คุณสามารถเข้าถึงโปรเจกต์ android ที่สร้างขึ้นด้วยบทเรียนนี้ได้ที่ที่เก็บ github ของเรา ที่เก็บตัวอย่าง kotlin ที่เก็บตัวอย่าง java 1 บันทึกข้อมูลบางอย่างบน back4app ในขั้นตอนนี้ เราจะสร้างคลาสด้วย js console และโค้ด javascript ที่จัดเตรียมโดย parse parse และเราจะสร้างคำถามสำหรับคลาสนี้ เรามาสร้างคลาสที่หลากหลาย ซึ่งจะเป็นเป้าหมายของคำถามในคู่มือนี้ คลาสที่เราจะสร้างคือ author author , book book , publisher publisher และ bookstore bookstore , ซึ่ง book book มีความสัมพันธ์แบบ 1\ n กับ publisher publisher และ n\ n กับ author author , และ bookstore bookstore มีความสัมพันธ์แบบ n\ n กับ book book ใน parse js console สามารถรันโค้ด javascript ได้โดยตรง โดยการสอบถามและอัปเดตเนื้อหาฐานข้อมูลแอปพลิเคชันของคุณโดยใช้คำสั่ง js sdk รันโค้ดด้านล่างจาก js console ของคุณและแทรกข้อมูลลงใน back4app นี่คือรูปลักษณ์ของ js console ในแดชบอร์ดของคุณ ไปข้างหน้าและสร้างคลาสด้วยเนื้อหาตัวอย่างต่อไปนี้ 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 สืบค้นข้อมูลจากแอป android ตอนนี้ที่คุณได้กรอกข้อมูลในคลาสทั้งหมดแล้ว เราสามารถทำการสืบค้นเชิงสัมพันธ์ในนั้นได้ มาลองเริ่มต้นด้วยการกรอง หนังสือ หนังสือ ผลลัพธ์ตามผู้จัดพิมพ์ โดยค้นหาผลลัพธ์ที่เป็นของ ผู้จัดพิมพ์ ผู้จัดพิมพ์ “acacia publishings” (หรือ “publisher a”) โดยใช้ 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 } ตอนนี้เรามาค้นหาว่า bookstore bookstore วัตถุใดบ้างที่มี book book วัตถุที่มีวันที่เผยแพร่มากกว่า 01/01/2010 โดยใช้การค้นหาภายในด้วย parsequery wheregreaterthan parsequery wheregreaterthan วิธีการและจากนั้น parsequery wherematchesquery parsequery wherematchesquery วิธีการ 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 } ตอนนี้เรามาสร้างคำค้นหาที่ซับซ้อนมากขึ้น โดยมองหาวัตถุ bookstore bookstore ที่มีอย่างน้อยหนึ่ง book book ที่เขียนโดย author author “aaron writer” (หรือ “authora”) โดยใช้ whereequalto whereequalto และ 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 } เสร็จแล้ว! ในตอนท้ายของคู่มือนี้ คุณได้เรียนรู้ว่าการค้นหาความสัมพันธ์ทำงานอย่างไรใน parse และวิธีการดำเนินการเหล่านี้ใน back4app จากแอป android