2016-07-14 32 views
1

Ich habe eine MySQL-Tabelle mit einer url Spalte und ich möchte eine Liste aller url Wert in der Tabelle erhalten. Struktur:Wie kann ich eine Liste eines bestimmten Feldes aus einer Sails JS Waterline-Sammlung erhalten?

Structure

In PHP Laravel ich mit so etwas getan haben könnte eine Reihe von jedem url Spaltenwert zu erhalten:

$boards = Board::all()->lists('url'); 

Allerdings kann ich nicht herausfinden, wie dies zu tun mit Segel JS. Ich habe bemerkt, dass find() ohne irgendein Argument jede Zeile in der Datenbank bekommt, aber ich kann nichts in der Dokumentation finden, das mir erlauben würde, entweder eine Liste der Werte für die url Spalte oder eine Möglichkeit, über die zu iterieren zurückgegebene Sammlung.

ich das versucht habe:

var boards = Board.find().exec(function(error, _boards) { 
    if(error) 
    { 
    return response.negotiate(error); 
    } 

    return _boards; 
}); 

Allerdings kann ich nicht wirklich scheinen über die zurückgegebenen Daten iterieren.

Irgendwelche Gedanken?

EDIT:

Voll HomepageController.js:

module.exports = { 
    index: function (request, response) { 
    var data = { 
     currentDate: (new Date()).toString(), 
     boards: Board.query('SELECT url FROM board', function (error, results) { 
     if (error) { 
      return response.negotiate(error); 
     } 

     return results; 
     }) 
    }; 

    return response.view('homepage', data); 
    } 
}; 

EDIT: Arbeits Code:

module.exports = { 
    index: function (request, response) { 
    Board.query('SELECT url FROM board', function(error, results) { 
     if(error) 
     { 
     return response.negotiate(error); 
     } 

     return response.view('homepage', { currentDate: (new Date()).toString(), boards: results }); 
    }); 
    } 
}; 

Antwort

2

Sie können eine rohe .query() verwenden, um einzelne Spalten auswählen:

Board.query('SELECT url FROM board', function (err, results) { ... }); 

jedoch im Auge behalten, dass Ihre Daten immer noch wie folgt aussehen:

[{url: 'row 1 value'}, {url: 'row 2 value'}, ...] 
+0

Hallo, habe ich versucht, was Sie aber schlug ich kann immer noch nicht die Ergebnisse in meinem HTML angezeigt bekommen. Für mein HTML mache ich nur eine for-Schleife über die Variable 'boards' mit Twig. Ich habe den Code für meinen Controller zum Hauptpost hinzugefügt. –

+0

'Board.query' gibt die Daten nicht synchron zurück, das ist ein asynchroner Callback. Weisen Sie' datains.boards' innerhalb der Callback-Funktion 'result' zu und rufen Sie dann 'response.view()' auch innerhalb des Callbacks auf. –

+0

Danke, das funktioniert. Das wird eine Weile brauchen, um sich daran zu gewöhnen. Gibt es empfohlene Möglichkeiten, meine Controller zu bauen, um dies zu vereinfachen? Zum Beispiel, wenn ich mehrere Abfragen ausführen würde, wie würde ich sicherstellen, dass sie alle abgeschlossen wurden, bevor Sie die Ansicht zurückgeben? –