2016-05-22 10 views
2

Ich verwende einen node.js-Server, der REST API-Aufrufe verarbeitet. Die Antwort dieser Aufrufe ist entweder eine oder eine Liste von MongoDB-Objekten (JSON).So erstellen Sie automatisch eine REST-API node.js/MongoDB

Ich habe schon gelesen über Parameter und wie man damit umgeht. Aber gibt es eine Möglichkeit, dies automatisch zu tun?

Lets sagen, dass ich eine User Collection haben:

name: String, 
hobby: String, 
age: Number 

Jetzt möchte ich eine Liste aller Benutzer erhalten, die von Alter = 18 sind.

Ich weiß, dass ich Parameter wie diese wiederherstellen kann:

url: http://localhost:3000/user?age=18&hobby=something 

var app = express(); 
app.get('/user', function (req,res) { 

    var age=req.query.age; 
    var hobby=req.query.hobby; 

    mondodbUser.find(...); 
} 

aber davon aus, dass der Benutzer 10 verschiedene Eigenschaften hat, und ich habe 15 verschiedene Kollektionen. Kann ich das nicht dynamisch machen? Also muss ich nicht jeden möglichen Parameter wiederherstellen?

Ich möchte in der MongoDB die Art und Weise suchen, dass alle angegebenen Parameter verwendet werden.

Ich hoffe ich konnte mich gut genug ausdrücken: D Danke!

+0

_assume, dass der Benutzer 10 verschiedene Eigenschaften hat, und ich habe 15 verschiedene Collections_, können Sie sich auf die Klärung bitte? – chridam

+0

Ich möchte nicht jeden einzelnen Parameter manuell aus dem URI wiederherstellen und ihn in der Methode find() für den MongoDB verwenden, sondern nur die Methode find() mit den Parametern aufrufen, die im URI angegeben sind. – HideAndSeek

+0

Vielleicht überlege ich das und ich könnte einfach versuchen, jeden Parameter zu retreive und es nur der Find-Methode zu geben, auch wenn es NULL/undefiniert ist? – HideAndSeek

Antwort

2

Da der req.query kehrt ein JS-Objekt nach der Abfrage-String analysiert wird, wo die Objekteigenschaften in der Abfragezeichenfolge definiert haben, zB:

/user?name=andrew&age=22

req.query kehrt das Objekt { name: "andrew", age: "22" }

Daher kann es als find()-Methodenargument verwendet werden, solange die Eigenschaften im Objekt dem zugrunde liegenden Auflistungsdokumentschema entsprechen.

Anschließend können Sie tun:

app.get('/user', function (req, res) { 
    User.find(req.query, function (err, users){ ... }); 
}