2014-02-05 133 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重复键错误...”(包括违规重复键)的情况。