0

私はノードが初めてで、プロミス、特に pg-promise についてすべて学んでいます。これは、Express と pg-promise を使用してやりたいことです。

  1. メールをチェックする、
  2. 見つからない場合は、ユーザー名を確認してください。
  3. 見つからない場合は、新しいユーザーを作成します。
  4. ユーザーIDを返す

私はうまく機能しているSQLを実行するレポをセットアップしました(db.users)。

私の承認ハンドラーでは、レポ呼び出しを互いに追跡する方法がわかりません。構文は私には不格好に思えます。これが私がこれまでに持っているものです:

exports.signup = function( req, res, next ) {

const username = req.body.username;
const email = req.body.email;
const password = req.body.password;

 // See if a user with the given email exists
     db.users.byEmail({email: email})
      .then(user => {
        if (user) {
         return res.status(422).send({ error: 'Email is in use'});
       } else { 
         return null;   <-- must I return something here?
       }
      })
   .then(() => {
     db.users.getUsername({username: username})
     .then(user => {
        if (user) {
         return res.status(422).send({ error: 'Email is in use'});
       } else { 
         return null;   <-- must I return something here?
       }

       ...etc

   })

多分 pg-promises はこのように連鎖しませんか? それらは互いに入れ子にする必要がありますか、それとも完全に別々のブロックにする必要がありますか? また、キャッチがどこに行くのかよくわかりません。さまざまなチュートリアルに従って、考えられるあらゆる方法を試しましたが、「既に設定されているヘッダーを設定できません」や「約束が返されていません」などのエラーが発生します。ここで親切な人が私を案内してくれるなら、本当に感謝しています。

4

3 に答える 3