2014-11-14 10 views
8

Ich habe eine Klasse von Firma, die Benutzer Zeiger hat. Die Abfrage Ich möchte auf Firma Klasse ist wie folgt:Abfrage auf Zeiger in Parse.com Objekte in Javascript

abrufen Firma Zeilen, in denen Benutzer Objekt einen Namen gleich ‚ABC‘ hat

Also, wie soll ich diese Abfrage bilden?

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

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

Ist es möglich, eine solche Anfrage in einer einzigen Anfrage zu schreiben? Danke.

+0

Haben Sie jemals eine Lösung für diese bekommen? – jeffdill2

Antwort

10

Sie müssen zunächst den Benutzer anhand des Namens von "ABC" abfragen. Führen Sie dann im Erfolgsrückruf dieser Abfrage die Abfrage Ihrer Unternehmenstabelle mit der von der Benutzerabfrage zurückgegebenen Objekt-ID aus. Etwas wie folgt aus:

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

Hallo, vielen Dank für die Antwort .. Ich fragte, weil ich wissen musste, ob dies in einer einzigen Abfrage möglich ist. Ähnlich wie innere Abfragen in MySql. – mango

+1

Danke Mann sehr hilfreich! –

+0

Es ist sehr umständlich, ein Zeigerelement zu erstellen, aber das funktioniert. Danke dafür. – DiamondDrake

3

können Sie verwenden ein 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

Ich sollte die Abfrage sagen wird ...

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); 
    }); 
}); 
Verwandte Themen