Database Reference
In-Depth Information
und ein Klick auf den Bandmitglied-Link liefert einige Informationen über
den Künstler zurück - namentlich die Rolle, die er einnimmt. Zusätzlich wird
jeder Künstler im System aufgelistet, der die gleiche Rolle ausfüllt.
Die Suche nach Led Zeppelin liefert uns beispielsweise Jimmy Page, John
Paul Jones, John Bonham und Robert Plant zurück. Wenn Sie Jimmy Page
anklicken, sehen Sie, dass er Gitarre spielt, und es erscheint eine Liste mit
vielen anderen Künstlern, die ebenfalls Gitarre spielen, etwa The Edge von
U2.
Um die Entwicklung unserer Webanwendung etwas zu vereinfachen, benöti-
gen wir zwei weitere node-Pakete: bricks (ein einfaches Web-Framework) und
mustache (eine Templating-Bibliothek).
$ npm install bricks mustache
Wie in den vorigen Abschnitten müssen alle Datenbanken laufen, wenn Sie
den Server starten. Laden Sie den folgenden Code herunter und führen Sie
ihn aus:
$ node band.js
Der Server läuft an Port 8080, d. h., wenn Sie mit Ihrem Browser http://
localhost:8080/ besuchen, sollten Sie ein einfaches Suchformular sehen.
Sehen wir uns den Code an, der eine Webseite aufbaut, die die Band-Infor-
mationen enthält. Jeder URL übernimmt bei unserem kleinen HTTP-Server
eine eigene Funktion. Die erste finden Sie auf http://localhost:8080/band
und Sie erwartet einen Bandnamen als Parameter.
redis/bands.js
appServer.addRoute( "^/band$" , function (req, res) {
var
bandName = req.param( 'name' ),
bandNodePath = '/bands/' + couchUtil.couchKeyify( bandName ),
membersQuery = 'g.V[[name:"' +bandName+ '"]]'
+ '.out("member").in("member").uniqueObject.name' ;
getCouchDoc( bandNodePath, res, function ( couchObj ) {
gremlin( membersQuery, function (graphData) {
var artists = couchObj && couchObj[ 'artists' ];
var values = { band: bandName, artists: artists, bands: graphData };
var body = '<h2>{{band}} Band Members</h2>' ;
body += '<ul>{{#artists}}' ;
body += '<li><a href="/artist?name={{name}}">{{name}}</a></li>' ;
body += '{{/artists}}</ul>' ;
body += '<h3>You may also like</h3>' ;
body += '<ul>{{#bands}}' ;
body += '<li><a href="/band?name={{.}}">{{.}}</a></li>' ;
body += '{{/bands}}</ul>' ;
writeTemplate( res, body, values );
 
Search WWH ::




Custom Search