2016-07-24 19 views
1

Ich muss alle Abfragen validieren Params von http Anfragen, Knex oder Bücherregal haben eine Funktion, so etwas zu tun?Node Bookshelf.js wie überprüft man, ob ein Feld in der Tabelle existiert

Hier ist mein Code Beispiel:

var validateModelQuery = function(Model , query) { 
for(var att in query) { 
    if(!Model.has(att)) //does not exist 
     return false; 
} 
return true; 
}; 

/

router.get('/customers', function(req, res, next) { 
if (!validateModelQuery(Customer , req.query)) { 
    res.status(400); 
Customer.where(req.query).fetchAll() 
...... 

Was schlagen Sie vor Jungs Anfrage params oder Körper zu überprüfen, weil alle Felder auf jeder Route manuell schreiben, ist wirklich eine schlechte Codierung.

+0

Hallo João, ich denke, weder Bücherregal noch Knex bieten eine solche Funktion. Wenn Sie die zugrunde liegende Datenbank kennen, können Sie einige Systemtabellen abfragen (und wahrscheinlich die Ergebnisse zwischenspeichern). Zum Beispiel MySql: http://stackoverflow.com/questions/4165195/mysql-query-to-get-column-names#4165253; Übersetzen Sie dann den Spaltennamen in camel case, wenn dies für die Attributnamen Ihres Bookshelf-Modells zutrifft. – bgerth

Antwort

0

knex bieten hasColumn Funktion, die verwendet werden können, um zu überprüfen, ob eine Spalte bereits vorhanden ist.