2016-05-27 3 views
0

Ich versuche Benutzer in der Nähe eines bestimmten Ortes zu finden, wo field1 = No und field2 = No (was cat gleich (field2) ist) aber wenn ich versuche, die Abfrage so führen sie es lieferte keine ErgebnisseSuche nach einer Abfrage, die leer ist, wenn Parameter im Feld für nodejs und mongodb verwendet werden

function (currentLoc, radius, cat, db, callback) { 
    ... 
    var query = db.collection('User').find({ 
     CurrentLoc: { 
      $geoWithin: { $centerSphere: [currentLoc, maxDistance] } 
     }, 
     field1: "No", 
     cat: "Yes" 
    }); 
} 

Wenn ich versuche, und die Abfrage mit field2 laufen anstelle des Parameters cat die Abfrage funktioniert und gibt das Ergebnis. Nicht sicher, warum es nicht funktioniert, wenn man den Parameter auch übergibt

+0

Ich bin ein wenig verwirrt. Ihr Objekt sieht also folgendermaßen aus: {field1: 'No', cat: 'yes'} 'oder' {field1: 'No', field2: 'Yes'} '? Ich bin nicht sicher, was Sie mit Feld2 gleich Katze meinen. – steezeburger

+0

Entschuldigung, was ich meine, ist in der Datenbank {Feld1: 'Nein', Feld2: 'Ja'}. In dieser Funktion wird der Parameter cat in einer Folge von field2 übergeben. Ist das für Sie klar? –

Antwort

0

Sie sagen ihm, nach der Eigenschaft "Katze" zu suchen. Sie müssen die Abfrageeigenschaft manuell festlegen. Siehe How to use a variable as a field name in mongodb-native findOne()?

+0

also versuche ich, dem Beispiel der Verbindung zu folgen, aber ich bekomme req in undefined. Wo soll das definiert werden? Auch mit Params, gibt es eine Bibliothek, die ich importieren muss? –

+0

Sorry war früher auf Handy, also gab eine schnelle Antwort. Das Argument, das Sie an .find() übergeben, ist ein JavaScript-Objekt. In Ihrem Fall sieht es so aus: '{CurrentLoc: {}, field1: 'No', field2: 'Yes'}'. Um dies dynamisch mit dem Wert von cat zu erstellen, hätten Sie etwas wie 'var toFind = { CurrentLoc: {}, field1: 'Nein' }; toFind [Katze] = 'Ja'; ' und schließlich Abfrage an Ihre .find() übergeben rufen ' var query = db.collection ('User') finden (tofind). ' – steezeburger

+0

Das ist perfekt funktioniert super! vielen Dank! –