2017-06-09 4 views
0

verwendet wird. Ich versuche, Informationen basierend auf einer ID, die sie in einer GET-Anforderung von einem MEAN-Server angegeben haben, an Clients zu senden.Die MongoDB-Abfrage gibt null zurück, wenn die Variable

Dies ist mein Code:

app.get('/contactlist/:id', function (req, res) { 
    var id = req.params.id; 
    console.log(id); 
    db.transactions.findOne({ id: { "$exists": true } }, function (err, doc) { 
    res.json(doc); 
    }); 
}); 

Zum Beispiel, wenn ich http://127.0.0.1:3000/contactlist/332602842017 abfragen, 332602842017 die id von den Kunden gesendet wird. Dies wird dann einfach in einer Variablen gespeichert und später in einer MongoDB-Abfrage verwendet. Die console.log(id) zeigt die korrekte übergebene ID an.

Das Problem ist die Abfrage auf dem Server mit dem vorherigen Code gibt eine Null zurück.

Ich habe dann versucht, die gleiche Abfrage in MongoDB:

db.getCollection('transactions').findOne({ 332602842017: { "$exists": true } }, ...); 

Es funktionierte und die Abfrage zurückgegebenen Daten und war ein voller Erfolg. Ich habe auch versucht, die Änderung meinen Code auf dem Server aus:

db.transactions.findOne({ id: { "$exists": true } }, ...); 

zu:

db.transactions.findOne({ 332602842017: { "$exists": true } }, ...); 

Die Ergebnisse waren auch ein Erfolg und zurückgegebenen Daten.

Was ist das Problem mit der var id, die ich erklärt habe? Ich habe die gleiche Methode verwendet und es funktioniert, wenn ich für eine Löschung und PUT-Anfrage verwendet habe. Warum verwendet meine Abfrage meine id Variable nicht?

Antwort

0

Haben Sie versucht, $ eq anstelle von $ exists zu verwenden?

als solche:

db.transactions.findOne({ id : { $eq : req.params.id }}, function(err, doc){ 
Verwandte Themen