2013-04-04 6 views
0

Я делаю базовую систему аутентификации с использованием Express, Mongoose и PassportJS. Что я хочу сделать, это проверить базу данных, если введенное имя пользователя и пароль уже существуют в базе данных. Вот мой пример кода:Как проверить, существует ли встроенный документ в базе данных до сохранения в Mongoose

//Post: /signup 
app.post('/signup', function (req, res) { 
    var username = req.body.person.user.username; 
    var password = req.body.person.user.password; 

    Person.user.find({'username': username}, function (err, user) { 
    if (err) { 
     console.log(err.name); 
    } else { 
     console.log('User Found'); 
    } 
    }); 
}); 

Проблема заключается в том, что возвращает этот вид ошибки:

TypeError: Cannot call method 'find' of undefined 

Может кто-то пожалуйста, помогите мне.

+0

ошибка говорит, что Person.user неопределен ... первый инициализировать объект, чем методы вызова на нем – ogres

ответ

3

Как указано на robertklep, вы не проверяете правильность существования пользователя. Кроме того, поскольку имя пользователя наиболее вероятно уникально, вы можете просто использовать findOne (findOne() возвращает один объект, в то время как find() также может возвращать один объект, но он будет переносить его в массив).

Person.findOne({'username': username}, function (err, user) { 
    if (err) { 
    console.log(err.name); 
    return; 
    } 
    if (!user) 
    console.log('User not Found'); 
    return; 
    } 
    console.log('User found'); 

}); 
+0

Привет, ваши решения –

0

Я думаю, что вы ищете это:

Person.find({ 'user.username' : username }, ...) 

FWIW, если обратный вызов не вызываются с ошибкой это не означает, что пользователь был найден, это просто означает, что вообще не было ошибки, выполняющие запрос. Но user все равно может иметь значение NULL, что означает, что у запроса не было соответствующих результатов.

+0

я попробовал этот метод, но проблема в том, что возвращает следующее сообщение об ошибке: TypeError: Object {первый: «Miguel », последнее: 'Лоренцо', _id: 515e3c2d99ebf01706000020, __v: 0, пользователь: {имя пользователя: 'MIGO123', пароль: '123', позволяют: истинно}, братья и сестры: [], занятостей: [ ], образование: [], мать: {affiliate: false}, отец: {affiliate: false}, адрес: {}, контакт: {}} не имеет метода 'find' –

+0

Что такое 'Person'? Кажется, вы переписываете свой модельный класс с результатом. Не могли бы вы добавить свою схему на свой вопрос? – robertklep