2016-05-24 4 views
4

In meinem unteren Code versuche ich, das Popup im mainQuery-Objekt anzufügen. Wenn ich nur Typen überlasse, dann bekomme ich das erwartete Ergebnis und Abfrage auch erstellen. Wenn ich beide Typen und Unterkategorien übergebe, wurde die Abfrage abgebrochen und das Objekt wird nicht wie erwartet unterhalb der Abfrage hinzugefügt. Bitte geben Sie eine Lösung dafür?Append-Objekt in Javascript

mainQuery = Category.find(); 

if(req.param('types')) { 
    searchKey = "types"; 
    typesObj.where = { 
     id: 1 
    }; 

    mainQuery.populate(searchKey, typesObj); 
} 

if(req.param('subcat')) { 
    searchkeySubCat = "subcategory"; 
    typesSubcat.where = { 
     id: 1 
    }; 

    mainQuery.populate(searchkeySubCat, typesSubcat); 
} 

mainQuery.exec(function (err, category) { 

}); 

Erwartete Abfrage wie unten

Category.find().populate('types', {where: {id:1}}).populate('subcategory', {where: {id:1}}).exec(function (err, res) { 
    console.log(res) 
}) 
+0

Was passiert, wenn Sie de löschen, wo innerhalb auffüllen? – Makah

Antwort

2

wie unten Versuchen:

function _getWhereClause(key, value) { 
    return {where: {key: value}}; 
} 

if (req.param('types')) { 
    populateKey = 'types'; 
    mainQuery.populate(populateKey, _getWhereClause('id', 1)); 
} 
// Do the same for any number of populate you want 

Endlich die Abfrage ausführen:

mainQuery.exec(function (err, category) { 

}); 

Überprüfen Sie die Dokumentation für mehr Verständnis - http://sailsjs.org/documentation/reference/waterline-orm/queries/populate

+0

Danke für Ihre Antwort, ich werde Sie überprüfen und aktualisieren. In der Zwischenzeit, können Sie meine andere Frage beantworten, die in Stackover-Fluss die folgende URL finden? http://StackOverflow.com/Questions/37608302/SailsJs-User-Through-relation-how-to-get-the-value-of-non-related-models –

0

Was sind tryin Sie grundsätzlich ist Methode mit mainQuery Objekt verketten. Sie erstellen also im Grunde eine Abfrage und verwenden diese Abfrage später. Ich werde vorschlagen, dass Sie diese Abfrage als eine Zeichenfolge machen. für zB.

mainQuery = "Category.find()."; 
mainQuery+= "populate("+searchKey+","+ typesObj+")."; 
mainQuery +="populate("+searchkeySubCat+","+ typesSubcat+")."; 
mainQuery +="exec(function (err, res) { console.log(res)});"; 

Also, wenn Sie mainQuery zugreifen müssen Sie:

Category.find().populate('types', {where:  {id:1}}).populate('subcategory', {where: {id:1}}).exec(function (err, res) { 
console.log(res) 
});