2017-06-16 12 views
-2

express.jsサーバーに対して単純なxhttp GET要求を実行しようとしています。残念ながら、私はこのコードで応答データを取得しません。私は正常に "res.send"を使用して本体をサーバーから送り返すので、接続は正常です。xhttp express.jsサーバーへのGET要求 - 何も返されません。

サーバーで「findOne」を使用しているかどうか、またはクライアントでxhttpを使用していないとわかりません。私はそれがクライアントだと思う。

アドバイスありがとうございます。

*クライアントコード*

function getfood() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.open("GET", "http://localhost:3000/clientfood", true); 
    xhttp.send(); 
} 

*サーバコード - Express.js /ノード*

app.get('/clientfood', cors(), (req, res) => { 
    //res.send('test'); //this works at least 
    db.collection('quotes').findOne({ 
    "_id": ObjectId("12345") 
    }, 
    { 
    name: 1, 
    quote: 1 
    }) 
}) 
+0

何 'findOne'戻りますか? 「約束」? – acdcjunior

+0

私は...あなたが応答データを送信しているか、または応答データを読み取っているかわかりません... –

+0

使用している正確なデータベースを指定してください。 – jfriend00

答えて

1

express.jsサーバに要求をGET xhttp - 何も返さ

サーバーコードが応答を返しません。呼び出し元に応答を返すには、res.send(...)またはres.json(...)のような処理を行う必要があります。データベースのクエリ結果を返すためにデータベースが提供するコールバックで行う必要があります(ほとんどのDBでは、プレーンコールバックまたは約束)。

お客様のクライアントコードは応答をリッスンしません。それを行う方法についての例は、here on MDNを示し、一般的に次のようになりますので、多くの

function getfood() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.addEventListener("load", function() { 
     if (xhttp.status === 200) { 
      // have data in xhttp.responseText, process it here 
     } else { 
      // got some other response here 
     } 
    }); 
    xhttp.open("GET", "http://localhost:3000/clientfood", true); 
    xhttp.send(); 
} 
+0

@jogoeire - これがあなたの質問に答えた場合、またはあなたを回答に導いた場合は、最も役立った答えの横にある緑色のチェックマークをクリックして、コミュニティにその旨を示すことができます。これはまた、適切な手順に従うためにstackoverflowにいくつかの評判ポイントを得るでしょう。 – jfriend00

0

おかげで - 特にjfriend00 @。私は、これらのフレームワークがどのように機能するかを知ることがたくさんあります。 SENDについてのアドバイスを受けた後、私はフロントエンドで結果を見るのに少し困りました。私は "約束を保留中"というメッセージを受け取りました。私はこの記事で提案されたコードでそれを修正しました。 Express - Promise pending when loop queries また、自分のIDのオブジェクト全体を取得するためにfindOne関数を変更しました。

決勝コード:

app.get('/clientfood', cors(), (req, res) => { 
mydata = db.collection('quotes').findOne(
{ 
"_id": ObjectId("12345") 
}) 
// promise code 
Promise.all([mydata]).then(listOfResults => { 
    res.send(JSON.stringify(listOfResults)) //for example 
}, err => { 
    res.send(500, JSON.stringify(err)); // for example 
}); 

}) 
関連する問題