2015-05-30 9 views
8

Sto costruendo la mia prima applicazione con un back-end.Numero limite di chiamate usando Parse

Informazioni generali

L'applicazione permette agli utenti di caricare un luogo, attaccano i tag ad esso, immagini, ecc

Dbs

sto usando Realm come linea Db & Parse.com come online Db.

Esempio

sto costruendo il modello di database e cercando di collegare tutti i molti-a-molti rapporti. Un esempio: Un luogo ha un numero di tag (stringa breve), un tag può avere un numero di posti.

A tal costruita ho fatto con reame: 1. rendere il luogo oggetto 2. Per ogni dato tag, fanno un oggetto tag e aggiungere il rapporto posto oggetto 3. Ottenere l'oggetto posto e aggiungere l'oggetto etichetta relazione

Ora posso ottenere tutti i tag da un posto, quando ho l'oggetto posto. Posso ottenere tutti i posti che appartengono a un oggetto tag.

Sto costruendo la versione online con Parse ora e ho capito che questo approccio porterà a molte chiamate.

Possibile soluzione

  • Non aggiungere il rapporto tag object al posto relazione (fase 3) invece, interrogare la classe di tag per relazione con il posto oggetto. (potrebbe essere molto lento?)
  • C'è un modo per creare il modello "offline" e inserirlo nel suo insieme?

Come sono nuovo a questo tipo di logica, spero che la domanda sia chiara. Capisco che sia ampio, ma penso che sia meglio spiegare il caso totale.

risposta

4

Esistono diversi modi per implementare relazioni molti-a-molti in Parse. È possibile utilizzare matrici o relazioni in base al numero di oggetti correlati. Puoi leggere di più su Parse's documentation.

In Analisi relazioni, è possibile aggiungere più oggetti in una relazione prima di effettuare una chiamata. Consentitemi di prendere l'esempio di Book and Author nella documentazione e regolarlo per il vostro caso. Il processo è il seguente:

  1. rendere l'oggetto posto
  2. Verificare se un oggetto tag è esiste. Creane uno se non.
  3. Associato gli oggetti di tag con posto oggetto in una relazione Parse

Ecco il codice di esempio:

// let’s say we have a few objects representing Place tags 
ParseObject tagOne= 
ParseObject tagTwo = 
ParseObject tagThree = 

// now we create a place object or specify the one you want to update 
ParseObject place= new ParseObject("Place"); 

// now let’s associate the tags with the place 
// remember to create a "tags" relation on Place 
ParseRelation<ParseObject> relation = place.getRelation("tags"); 
relation.add(tagOne); 
relation.add(tagTwo); 
relation.add(tagThree); 

// now save the book object 
book.saveInBackground(); 

EDIT AS commento qui sotto

Se si desidera trova tutti i posti con un determinato tag, puoi fare come:

ParseObject tag = .... 
ParseQuery<ParseObject> query = ParseQuery.getQuery("Place"); 
query.whereEqualTo("tags",tag); 
+0

Ma poi non sarò in grado di prendere un oggetto tag e trovare i posti associati. Anche checken è il tag esiste è una chiamata per ogni tag? – TomCB

+0

È ancora possibile eseguire una query per trovare tutte le posizioni con un determinato tag. C'è un esempio nella documentazione (vedi la mia modifica sopra per esempio). Per controllare i tag, ci sono anche diversi modi, ma penso che è possibile aggiungere un campo nel database di Realm per indicare che se il tag è stato aggiunto a Parse ancora. Potrebbe essere un campo String con objectId. – Ralphilius

+0

Questo era parte della mia domanda: fare una query per trovare i luoghi con un determinato tag, sarà meglio quindi rendere la relazione "luoghi" dall'oggetto tag? – TomCB

Problemi correlati