2016-05-29 43 views
0

我正在嘗試檢查用戶是否已經在註冊之前退出但不適用於我 當我在郵遞員測試它仍然創建用戶任何想法?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並在前夕創建新用戶RY時間

+0

不適用於我,當我嘗試創建新電子郵件時顯示錯誤 – nevergiveup

0

如果你想有唯一的用戶名用戶和/或郵件,你可以使用模型的attribute definitionunique類型是這樣的:

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})}); 
    }); 
});