2017-09-09 13 views
4

私は約束を使ってmysqlデータを返そうとしていますが、それはうまく動作しますが、mysqlでエラーを作成しようとするとエラーになります。約束の拒否がmysqlエラーで動作しない

(node:28464) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Users not found 
(node:28464) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 

私はどこにでもチェックし、それは私がキャッチを使用していますが、問題を把握することはできませんことを.catch使用することを言いますが、その奇妙な。通常は、正しい方法を知らずにそのまま続ける代わりに、これを解決する方法を知りたいと思います。

これは

getAllUser = 
    new Promise((resolve, reject) => { 
     db.query('SELECT * from users', function (error, results, fields) { 
      if (error){ 
       return reject('Users not found'); 
      }else{ 
       resolve(results[0]); 
      } 
     }); 
    }); 
module.exports = { 
    getAllUser 
}; 

そして、ここでは、私はモデルを呼び出していますか..ですモデルであるMySQLのテーブルはuserないusersと呼ばれているので、トップでモデルがエラーを返す必要があります。

router.get('/db',(req,res,next)=>{ 
    getAllUser.then((result)=>{ 
     console.log(result); 
    }).catch((e) => { 
     console.log(e); 
    }); 
}); 
+0

試みはその後、私がやった –

+0

@RobertRowntreeを "リターンは拒否" 働かなかった代わりに "拒否"返信しようとしました – FaF

+0

@RobertRowntreeその奇妙な、私は非常に多くの異なる方法を試みたが、それでも同じエラー。 – FaF

答えて

1

モデルファイルにエラーがあります。 Promiseを返す関数をPromiseの代わりに作成する必要があります。

の作業コード:

モデル:

getAllUser =() => new Promise((resolve, reject) => { 
    db.query('SELECT * from users', function (error, results, fields) { 
     if (error){ 
      return reject('Users not found'); 
     }else{ 
      resolve(results[0]); 
     } 
    }); 
}); 
module.exports = { 
    getAllUser 
}; 

ルータ:

router.get('/db',(req,res,next)=>{ 
    getAllUser.then((result)=>{ 
     console.log(result); 
    }).catch((e) => { 
     console.log(e); 
    }); 
}); 
+0

ありがとうございます!!!!!私は非常に長い間それを理解できませんでした、ありがとう! Dintは関数を使って約束を返すことについて知っています。 おかげで再び! – FaF

関連する問題