2014-07-01 17 views
18

ho la seguente struttura nella mia app:Parse: puntatori Includi nidificate in Query

MessageRecipients -> Message -> User 
        Message -> Activity 

dove il -> rappresentano un puntatore. Ho separato i messaggi e le tabelle dei destinatari dei messaggi perché ho bisogno di catturare se il messaggio è stato letto da ciascun destinatario.

La query che voglio fare è trovare tutti i messaggi per un destinatario. Quindi ho bisogno di includere il messaggio nella query MessageRecipients ma vorrei anche includere gli oggetti User e Activity nidificati.

var MessageRecipient = new Parse.Query('MessageRecipient'); 
messageQuery.equalTo('recipient', query.recipient); 
messageQuery.include('message'); 

Il messaggio ritorna senza attività e il mittente è popolato. Ho provato a chiamare messageQuery.include ('activity') ma non ha funzionato in quanto l'attività non è sulla tabella corretta.

C'è un modo per fare questa query o devi fare query separate per gli oggetti nidificati?

risposta

29

Avrai bisogno di includere quelle sub-sub-oggetti così:

messageQuery.include('message'); 
messageQuery.include('message.user'); // if user is the column name 
messageQuery.include('message.activity'); // if activity is the column name 
+0

che funziona. Grazie – rorymadden

+7

Solo un utile suggerimento per chiunque stia leggendo questa risposta - anche se è possibile includere oggetti secondari usando la notazione a punti come questa risposta corretta descrive non significa che sia così che si accede all'oggetto nell'adattatore. Dovrai interrompere l'accesso in questo modo: ParseObject activity = object.getParseObject ("message"). GetParseObject ("activity"); se provi ParseObject activity = object.getParseObject ("message.activity"); se ti darà una NullPointerException. –

+0

Diciamo che faccio una query al 'MessageRecipients' e voglio che questa query abbia un ordine crescente dalla classe' Activity' (createdAt), c'è un modo per farlo accadere? –

15

È anche possibile raggiungere questo obiettivo in una sola riga:

messageQuery.include(["message", "message.user", "message.activity"]); 
+3

ottimo punto! dettagli come questo non sono mai accennati ai documenti Parse! – rashadb