2016-04-11 3 views
0

Also habe ich gerade angefangen, MEAN zu lernen und ich möchte nur ein bestimmtes Feld einer Datenbank zeigen, die ich auf einem Node-Server erstellt habe. Ich benutze auch Express. Hier ist mein Code soweit.MongoDB & NodeJS: Wie man ein bestimmtes Feld auf einer Jade-Datei auf einem Server anzeigt

index.js

router.get('/generate', function(req, res) { 
// get out mongoclient to work with our mongo server 
var MongoClient = mongodb.MongoClient; 

// where the mongodb server is 
var url = 'mongodb://localhost:27017/data'; 

MongoClient.connect(url, function(err, db) { 
    if(err) { 
     console.log('Unable to connect to server', err); 
    } else { 
     console.log('Connection established'); 

     var collection = db.collection('compliments'); 

     collection.find({}).toArray(function(err, result) { 
      if (err) { 
       res.send(err); 
      } else if (result.length) { 
       res.json(result); // problem here 
      } else { 
       res.send('No documents found'); 
      } 

      db.close(); 
     }); 
    } 
}); 

});

generate.jade

doctype html 
html 
head 
    title("Compliment Generator") 
body 
    h1 !{title} 
    block content 
     h3. 
      !{compliment} 

Dies ist, wie es auf localhost aussieht: 3000/generieren

[{"_id":"570b50f8265f2536d2fd6ed6","type":"compliment","content":"You are absolutely gorgeous."},{"_id":"570b50f8265f2536d2fd6ed7","type":"compliment","content":"You are wonderful."},{"_id":"570b50f8265f2536d2fd6ed8","type":"compliment","content":"I could look at you all day."}] 

Wie kann ich es machen, so dass es nur den "Inhalt" zeigt? Vielen Dank!

Antwort

0

Wenn ich richtig verstehe, möchten Sie nur den Inhalt von der Abfrage zurückgegeben werden.

Das sollte unter Link von Nutzen sein:

https://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/

Sie wollen im Wesentlichen die Abfrage ändern, um nur den „Inhalt“ wie so ein Teil abzurufen:

collection.find({}, { content: 1, _id:0 }) 

Diese geben wird, dass Sie möchten die "_id" (die standardmäßig enthalten ist) nicht enthalten und Sie möchten den "Inhalt" einschließen.

+0

Danke! Jetzt sieht es so aus: [{"content": "Du bist absolut hinreißend."}, {"Content": "Du bist wundervoll."}, {"Content": "Ich könnte dich den ganzen Tag ansehen."} ], wie würde ich den "Inhalt" Teil loswerden und nur die tatsächlichen Komplimente zeigen? – user298519

+0

Sie greifen auf die Elemente wie ein Schlüsselwertpaar zu, so dass 'result [0] .content' Ihnen den Wert des' content'-Feldes für das erste Element geben würde. Sie können diese mit einer for-Schleife oder einem anderen gewünschten Iterationsmuster durchlaufen. – Vistari

+0

Mein vorheriger Kommentar lässt mich aus irgendeinem Grund nicht bearbeiten. Nur eine zusätzliche Anmerkung, wenn es immer noch eine JSON-Zeichenfolge ist, müssen Sie es in ein JavaScript-Objekt mit der folgenden Syntax "JSON.parse (result);" – Vistari

Verwandte Themen