2016-04-29 6 views
1

Req.params erhält den Wert, nachdem db.collection.find ausgeführt wurde. Kann jemand mir sagen, was ich mit diesem Code falsch mache?Nicht in der Lage, Parameter an Mongo zu übergeben. Auflistung finden

exports.findAll = function(req, res) { 
    var postal = parseInt(req.params.postal); 
    db.collection('ifscdata', function(err, collection) { 
     collection.find({'ADDRESS':/postal/}).toArray(function(err, items) { 
      res.send(items); 
     }); 
    }); 

Ich soll eine teilweise Suche nach Adresse basierend auf Post tun. Aber ich bin nicht in der Lage, den Wert an Post zu übergeben, weil es den Wert erst danach erhält.

Funktion Route ist diese

app.get('/ifsc/:postal', ifsc.findAll); 

Beispiel-URL:

http://localhost:3000/ifsc/691009

Antwort

1

Sieht aus wie Sie regex in Ihrer Abfrage verwenden müssen, sollten Sie die Variable mit dem RegExp Objekt Einwickeln wie folgt:

exports.findAll = function(req, res) { 
    var postal = req.params.postal, 
     regex = new RegExp(postal); 

    db.collection('ifscdata', function(err, collection) { 
     collection.find({'ADDRESS': regex}).toArray(function(err, items) { 
      res.send(items); 
     }); 
    }); 
+1

Danke :) und das war schnell: P – user2038580

0

Warum Sie Schrägstriche zwischen postal setzen?

Haben Sie das versucht?

exports.findAll = function(req, res) { 
    var postal = parseInt(req.params.postal); 
    db.collection('ifscdata', function(err, collection) { 
     collection.find({'ADDRESS': postal}).toArray(function(err, items) { 
      res.send(items); 
     }); 
    }); 
+0

es ist wie ein Teilvergleich in mongodb. Es prüft, ob zumindest ein Teil des Wertes in dem Feld vorhanden ist. – user2038580