2014-11-14 4 views
8

Ho una classe di Società che dispone di utenti puntatori. La query che voglio su società classe è come questo:Query sul puntatore in parse.com Oggetti in Javascript

Recuperare impresa righe in cui utente oggetto ha un nome uguale a 'ABC'

Allora, come devo formare questa ricerca?

var Company = Parse.Object.extend("Company"); 
var query = Parse.Query(Company); 
query.include("User"); 

query.equalTo("name")  ???? 

È possibile scrivere tale richiesta in una singola query? Grazie.

+0

Hai mai una soluzione per questo? – jeffdill2

risposta

10

Avrete bisogno di interrogare l'utente prima in base al nome di "ABC". Quindi, nel callback di successo di quella query, eseguire la query sulla tabella della società utilizzando l'oggetto ID restituito dalla query Utente. Qualcosa di simile a questo:

var userQuery = Parse.Query('_User'); 
var companyQuery = Parse.Query('Company'); 

userQuery.equalTo('name', 'ABC'); 

userQuery.find({ 
    success: function(user) { 
    var userPointer = { 
     __type: 'Pointer', 
     className: '_User', 
     objectId: user.id 
    } 

    companyQuery.equalTo('user', userPointer); 

    companyQuery.find({ 
     success: function(company) { 
     // WHATEVER 
     }, 
     error: function() { 
     } 
    }); 
    }, 
    error: function() { 
    } 
}); 
+0

Ciao, grazie per aver risposto .. Ho chiesto perché dovevo sapere se questo è possibile in una singola query .. Simile alle query interne in MySql. – mango

+1

Grazie amico molto utile! –

+0

È molto difficile creare un puntatore, ma funziona. Grazie per questo. – DiamondDrake

3

È possibile utilizzare un inner query:

var Company = Parse.Object.extend("Company"); 
var mainQuery = Parse.Query(Company); 

var UserObject = Parse.Object.extend("User"); 
var innerUserQuery = new Parse.Query(UserObject); 
innerBankQuery.equalTo("name", "ABC"); 
mainQuery.matchesQuery("bank", innerBankQuery); 

var ansCollection = mainQuery.collection(); 
    ansCollection.fetch({ 
     success: function(results) { 
     // Do whatever ... 
     } 
    }); 
2

dovrei dire la query sarà ...

const userQuery = Parse.Query('_User'); 

userQuery.equalTo('name', 'ABC'); 

userQuery.find().then((user) => { 

    const companyQuery = Parse.Query('Company'); 

    companyQuery.equalTo('user', { 
     __type: 'Pointer', 
     className: '_User', 
     objectId: user.id 
    }); 

    companyQuery.find().then((company) => { 
     console.log(company); 
    }); 
});