2014-02-05 3 views
0

Я хотел бы знать, что я могу сделать, чтобы проверить intem коллекции в 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

Я не знаю Diddly приземистый о Node.js, но поиски в MongoDB находятся на объекте Collection, как находка() и findOne(). Если предположить, что имя достаточно, чтобы сделать запись уникальным, «проверить, существует ли» будет выглядеть

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

Очевидный подход должен был бы добавить unique index на username, который будет гарантировать, что Вы не можете вставить дубликаты.

Логика обработки ошибок будет аналогична тому, что вы набросали в описании вопроса. Если username уже существует, при попытке вставить будет исключение, а строка err будет чем-то вроде «E11000 duplicate key error ...» (включая дублирующий дублирующий ключ).

Смежные вопросы