2016-09-19 2 views
1

Ich versuche zu finden, ob meine Sammlung einen Datensatz mit profilename = john hat und wenn ich status success zurückgeben, wenn ich sonst schicke Fehler zurück, aber in meinem Fall, es ist Erfolg für beide Fälle .Ich bin neu zu Knoten und Mongo kann mir jeder helfen.Wie finde ich einen Datensatz in MongoDB mit Node.js

Meine Funktion,

exports.searchprofilename = function (req, res) { 
    var params = req.params;console.log(req.params.id); 
    var record= db.collection('profile'); 
    record.find({profilename:params.id}, (err, result) => { 
    if (err){ return console.log(err) 
    } 
     if(!result){ 
      data = {status:'success'}; 
     } else{ 
      data = {status:'profile name already exists'}; 
     } 
     res.send(data); 
    }); 
}; 

Antwort

0

zu Debug Versuchen. die Art von Ergebnis-Array, so versuchen, die Länge, es zu überprüfen:

if(result.length==0){ 
    data = {status:'success'}; 
} else{ 
    data = {status:'profile name already exists'}; 
} 
0

Wenn Ihr query matches dann bedeutet es, Sie haben record dann Success

exports.searchprofilename = function (req, res) { 
    var params = req.params;console.log(req.params.id); 
    var record= db.collection('profile'); 
    record.find({profilename:params.id}, (err, result) => { 
    if (err){ return console.log(err) 
    } 
    // If record exist then return 'Success' 
     if(result.length>0){ 
      data = {status:'success'}; 
     } else{ 
      data = {status:'profile name already exists'}; 
     } 
     res.send(data); 
    }); 
}; 
+0

Das dachte ich mir auch. Aber die Dokumentation war nicht sehr klar über die Eigenschaften von Cursors. Danke für die Erklärung. –

-1

Versuchen Sie, diese

exports.searchprofilename = function (req, res) { 
     console.log("PARAMS",req.params.id); 
     var data = {}; 
     profile.findOne({profilename:req.params.id} , function (err, fetchDataObj) { 
       if (err) { 
        console.log(err) 
        return err; 
       } else { 
        data.status = 'success'; 
        data.result = fetchDataObj; 
        return data; 
       } 
      }).lean(true) 

    }); 
+0

@ downvoter bitte identifizieren was falsch in der Antwort ist ?? –

1
zurückkehren

Wenn Sie nur prüfen, ob ein Datensatz existiert, sollten Sie dies problemlos mit der Methode db.collection.count() tun können und prüfen, ob die Anzahl der Datensätze 0 ist oder nicht.

https://docs.mongodb.com/manual/reference/method/db.collection.count/

Ehrlich gesagt, bin ich Art und Weise neu MongoDB und ich kann immer noch nicht die Idee der Cursor erfassen, die der Rückgabetyp von db.collection.find ist() gemäß https://docs.mongodb.com/manual/reference/method/db.collection.find/

0

Ich denke, in Ihrem case, req.params.id ist ein String zum Beispiel '123', aber in Ihrem mongodb Profilname Feld wird als Nummer gespeichert.

So können Sie dies versuchen:

Änderung {profilename:params.id}-{profilename:parseInt(params.id)}

1

ich es gelöscht durch find({})-findOne({}) ändern, Danke jeden.

Verwandte Themen