2014-02-05 99 views
0

我想知道我能做些什麼來檢查MongoDB中的一個集合的實體。 我在下面描述的函數在db中插入用戶,如果用戶名存在,我會在插入前檢查。檢查項目集合值mongodb

exports.adduser = function(db) { 
return function(req, res) { 


    var userName = req.body.username; 
    var userEmail = req.body.useremail; 
    var userCod = req.body.usercod; 


    var collection = db.get('usercollection'); 

    collection.insert({ 
     'username' : userName, 
     'email' : userEmail, 
     'cod' : userCod 

    }, function (err, doc) { 
     if (err) { 

      res.send('There was a problem adding the information to the database.'); 
     } 
     else { 
      res.location('userlist'); 
      res.redirect('userlist'); 
     } 
    }); 

} 
} 

回答

0
var collection = db.get('usercollection'); 
collection.count({username:username}, function(err, count){ 
    if(err){ 
    return callback(err); 
    } 
    if(count > 0){ 
    return callback('User already exists!'); 
    } 

    //do your insert operation 

}); 
0

我不知道node.js的diddly蹲,但在MongoDB中查找是集合對象上查找()和findOne()。假設你的用戶名是足以讓一個記錄獨特的「檢查是否存在」看起來像

if (collection.findOne({ "username" : userName }) != null) { 
    println("username " + userName + " exists!"); 
} 
0

最明顯的方法是添加上username一個unique index,這將確保您不能插入重複。

錯誤處理邏輯將類似於您在問題描述中勾畫出的內容。如果username已經存在,則嘗試插入時會出現異常,並且err字符串會出現類似「E11000重複鍵錯誤...」(包括違規重複鍵)的情況。