2017-08-12 2 views
0

私は JavaScriptエラーオブジェクトを表示するにはどうすればよいですか?

https://www.npmjs.com/package/mysql

ここからのNode.jsとExpressのWebアプリケーションフレームワークと mysqlのパッケージを使用していますここに私のParent.jsは、ファイルの...それは

var db = require('../dbconnection'); 
var Parent = { 
findIfParentMobileNumberExists: function (parentmobilenumber, callback) { 
    db.query('SELECT parentmobilenumber from parents where parentmobilenumber=?', parentmobilenumber, function (err, rows) { 
     if (err) { 
      callback(err, null); 
     } 
     if (rows.length < 1) { 
      console.log("rows length less than 1"); 
      callback(err, null); 

     } 
     else if (rows.length !== 0) { 
      console.log("rows length greater than 1"); 
      callback(null, rows[0].parentmobilenumber); 
     } 
     else { 

     } 

    }); 

} 

module.exports = Parent; 

私のモデルファイルだと、ここに私ですregisterParent.jsファイル..これは私のルートです

var express = require('express'); 
var router = express.Router(); 
var Parent = require('../models/Parent'); 

router.post('/', function (req, res, next) { 

    var countrycode = req.body.countrycode; 
    var parentmobilenumber = (countrycode) + (req.body.inputMobileNumber); 

    //remove hyphens from mobile number 
    var parentmobilenumberwithouthyphens = 
    parentmobilenumber.replace(/-/g, ""); 

    //remove spaces from mobile number 
    var parentmobilenumberwithouthyphensandspaces = 
    parentmobilenumberwithouthyphens.replace(/ /g, ''); 

Parent.findIfParentMobileNumberExists(parentmobilenumberwithouthyphensandspaces, function (err, parentmobilenumberfromdb) { 
    if (err) { 
     res.json({registerErrorMessage: err.message}); 
    } 
    else { 
     if (parentmobilenumberwithouthyphensandspaces === parentmobilenumberfromdb) { 
      console.log(parentmobilenumberfromdb); 
     } 
     else { 
      res.json({registerErrorMessage: 'The Mobile Number does not exist in our database'}); 
     } 

    } 

}); 
}); 

正しいmobを入力するとILE番号iはデータベースにない間違った携帯電話番号を入力したときにconsole.logメッセージに表示された携帯電話番号が..しかし、得られたrows.lengthが

iがメッセージ 行の長さ以下取得され得ますこのブロックは、Errオブジェクトが表示されることはありません

if (rows.length < 1) { 
     console.log("rows length less than 1"); 
     callback(err, null); 

    } 

を実行したときに1 よりも、しかし、私は理解していない...つまり、このブロックはrouter.post機能

if (err){ 
res.json({registerErrorMessage: err.message}); 
} 
で実行されることはありません3210ので、最初に正しくエラーオブジェクトを表示したいです。 そして、エンドユーザが読むことができるエラーメッセージを表示します。 どうすればいいですか?

私はここ https://github.com/mysqljs/mysql#error-handling

ドキュメントを読んでみましたが、私は本当に適切にコールバックを実行する方法を理解していません。

答えて

0

あなたはexpressでhttpサーバを起動しません。

if(err){ 
    return callback(err); 
} 

は今、エラーが渡されます:エラーが発生した場合、あなたのロジックを終了する場合があります、まず

const app = express(); 
 

 
app.listen(insert port here)

+0

私はwebstormを使用しています..私はすでにこの文を別のファイルに持っています –

+1

cordeのこの部分に到達していないことを確認するためにres.json({registerErrorMessage:err.message})の隣にconsole.logを挿入しようとしましたか? 到達不能なコードよりもネットワーキングエラーに似ています。 –

+0

データベースレベルのエラーが発生したときにその文が実行されますが、rows.length <1のときにエラーが表示されます。 –

0

てみリスニングを開始するために以下のコードを挿入しますクライアント側でそれを捕まえてメッセージを表示することができます。例えば。 (jqueryの使用):

$.ajax({ 
    url:"your/backend", 
    dataType: "json", 
    success(res){ 
    if(res.code){ 
     return alert("an error ("+res.code+") occured. Sorry :/"); 
    } 
    //continue with valid response 
    } 
}); 

することただし、例えば、より一般的であるためにあなたのAPIを変更することがあり

エラー時に:あなたは、クライアント側でこれを行うことができるように

res.json({error:false,data:"whatever"}); 

::成功時に

res.json({error:err}); 

常にfalseまたはエラーオブジェクトのいずれかのthats、errorプロパティを返します
$.ajax({ 
    url:"your/backend", 
    dataType: "json", 
    success(res){ 
    if(res.error){ 
     return alert("an error ("+res.error.code+") occured. Sorry :/"); 
    } 
    //continue with valid response 
    alert(res.data); 
    } 
}); 
関連する問題