2016-05-29 2 views
0

Я пытаюсь проверить, не пользователь ли уже exite перед регистрацией, но не работает для меня когда я тестирую в почтальоне, он по-прежнему создан какой-либо идеей пользователя?Sailsjs: проверьте пользователя

create: function (req, res) { 
    if (req.body.password !== req.body.confirmPassword) { 
     return res.json(401, {err: 'Password doesn\'t match, What a shame!'}); 
    } 
    User.find(req.body).exec(function(err,users){ 

      if (err) { 
      return res.negotiate(err); 
     } 
     if (users.length) { 
      res.status(400); 
      return res.json('User already exists!'); 
     } 

    }else{ 
     User.create(req.body).exec(function (err, user) { 
      if (err) { 
      return res.json(err.status, {err: err}); 
      } 
      // If user created successfuly we return user and token as response 
      if (user) { 
      // NOTE: payload is { id: user.id} 
      res.json(200, {user: user, token: jwToken.issue({id: user.id})}); 
      } 
     }); 
    } 
}); 
+0

'User.find()' принимает [критерий ватерлинии] (https://github.com/balderdashy/waterline-docs/blob/master/queries/query-language.md), а не только объект. – Claies

+0

@Claies Я пытаюсь 'User.find ({email: params.email})' но не работает – nevergiveup

+0

Почему вы изменили с 'req.body' на' params'? ваша функция создания даже не имеет свойства 'params'. – Claies

ответ

0

попробовать изменить код в этой линии

User.find(req.body).exec(function(err,users){}); 

к: -

User.findOne({email:params.email}).exec(function(err,user){ 
    if(user){ 
    /** 
    *user exists ! 
    */ 
    }else{ 
    /** 
    *create new user 
    */ 
    } 

}

потому что вы используете найти с критериями, которые не существуют так это возвращает null и создать новый пользователь в eve Время

+0

не работает для меня, когда я пытаюсь создать новое письмо, это ошибка отображения – nevergiveup

0

Если вы хотите, чтобы пользователи с уникальным именем пользователя и/или по электронной почте вы можете использовать unique типа в модели attribute definition, как это чень:

attributes: { 
    username: { 
    type: 'string', 
    unique: true 
    } 
} 

Тогда ваш метод контроллера будет выглядеть следующим образом:

create: function (req, res) { 
    if (req.body.password !== req.body.confirmPassword) { 
     return res.json(401, {err: 'Password doesn\'t match, What a shame!'}); 
    } 
    User.create(req.body, function (err, user) { 
     if (err) { 
     return res.negotiate(err); // validation error will be automatically passed there 
     } 
     res.json(200, {user: user, token: jwToken.issue({id: user.id})}); 
    }); 
}); 
Смежные вопросы