2012-12-13 11 views
6

Ich habe Fragen, die den zurückgegebenen Daten Auftrag einer findAll Abfrage mit Limit gesetzt und Offset, ich bin in der Dokumentation Beispielcode verwenden: order: 'group DESC' aber einen Fehler aus, zu sagen:: Sequelize wie zurückgegeben Daten bestellen

Error: SQLITE_ERROR: near "group": syntax error 

Hier ist die komplette Funktion.

A_Model.findAll({ 
    offset:req.query.page * req.query.rows - req.query.rows, 
    limit :req.query.rows // TODO: Of course, I put the trailing comma here ;) 
    // TODO: order: 'group DESC' 
    }) 
.success(function (docs) { 
    response_from_server.records = count; 
    response_from_server.page = req.query.page; 
    response_from_server.total = Math.ceil(count/req.query.rows); 
    response_from_server.rows = []; 

    for (item in docs) { 
     response_from_server.rows.push({ 
      id :docs[item].id, 
      cell:[ 
       docs[item].group, 
       docs[item].description, 
       docs[item].path, 
       docs[item].value 
      ] 
     }); 
    } 

    // Return the gathered data. 
    res.json(response_from_server); 
}) 
.error(function (error) {  
    logger.log('error', error); 
}); 

Vielen Dank im Voraus.

+0

Eine SQL' Gruppe by' durch eine Aggregatfunktion zu Gruppe definieren muss. Es scheint, dass Sie keinen definiert haben. Ich bin mir nicht sicher, ob node.js sogar über die Fähigkeit verfügt, Aggregate und Gruppierungen zu erstellen. –

+1

@EricLeschinski: Danke für deinen Kommentar. Ich habe kürzlich von 'mongodb' nach' SQLite' gewechselt und weiß wirklich sehr wenig über 'SQL'. Kannst du mir ein Beispiel zeigen? – diosney

+1

@EricLeschinski: Nur notiert: 'Gruppe' ist eine Spalte in der Datenbank. Vielleicht ist es ein reserviertes Wort? – diosney

Antwort

12

Die "order" -Zeichenfolge, die Sie der findAll-Methode geben, wird nicht in Sequelize geparst, sondern nur maskiert, um SQL-Injektionen zu verhindern. "Gruppe" ist ein reserviertes Schlüsselwort in am meisteneinige SQL-Dialekte, so dass die Abfrage nicht ausgeführt werden kann.

Um es einfach die „Gruppe“ Spalte in `s setzen funktioniert, wie folgt aus:

A_Model.findAll({ 
offset:req.query.page * req.query.rows - req.query.rows, 
limit :req.query.rows, 
order: '`group` DESC' 
}) 
+0

Großartig! Es hat funktioniert wie ein Zauber! Vielen Dank!!! – diosney

+1

Versucht es in PostgreSQL und es sollte 'Reihenfolge: 'Gruppe DESC' sein, d.h. ohne die Backquotes. –

+1

toller Mann auf der Suche nach dieser Arbeit wie Boom: 0 – Adiii