2016-09-19 48 views
1

我正在嘗試查找我的集合是否具有profilename = john的記錄,如果存在,我將返回status success如果我返回失敗,但在我的情況下,它對兩種情況都返回成功我對節點很陌生,mongo可以幫助我。如何使用Node.js在MongoDB中查找記錄

我的功能,

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); 
    }); 
}; 

回答

0

嘗試調試。結果的類型是數組,所以儘量要檢查它的長度:

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

如果您query matches那麼就意味着你有record然後返回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

這就是我的想法。但是關於遊標的屬性文檔並不是很清楚。感謝您的解釋。 –

-1

試試這個

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請確定最新的錯誤在答案?? –

0

我想在返回類型的例如,req.params.id是一個字符串,例如'123',但在您的mongodb配置文件名字段中存儲爲數字。

所以,你可以試試這個:

變化{profilename:params.id}{profilename:parseInt(params.id)}

1

我改變find({})findOne({})清除它,感謝你們每一個人。