簡體   English   中英

如何返回Unirest的函數值並使用Express發送該值?

[英]How do I return the value of a function that Unirest and send that using Express?

我正在為我的編碼訓練營開發Language Translation應用程序。 我在后端使用Microsoft Text Translations API來轉換用戶輸入以獲得每個查詢的所需輸出。

我遇到的問題是,即使該函數在后端(終端的屏幕截圖)正常運行,我編寫的函數也沒有將數據返回到前端(檢查器的 屏幕截圖)

當前是轉換代碼:

 function langTranslateJSON(startLang, endLang, textString) { let queryURL = `https://microsoft-azure-translation-v1.p.rapidapi.com/translate?from=${startLang}&to=${endLang}&text=${textString}`; unirest .get(queryURL) .header( "X-RapidAPI-Key", API_KEY ) .end(result => { //data comes back as an XML string 👎// let xmlString = result.body parseString(xmlString, function (err, data) { console.log(data) return data }) }) } 

這是到用戶的POST路線

  //Using Express// app.post("/api/Translate", function (req, res) { res.send(langTranslate.langTranslateJSON( req.body.translateFromLanguage, req.body.translateToLanguage, req.body.translateFrom)); }); 

// notice 4th callback argument after textString argument
function langTranslateJSON(startLang, endLang, textString, callback) {
  let queryURL = `https://microsoft-azure-translation-v1.p.rapidapi.com/translate?from=${startLang}&to=${endLang}&text=${textString}`;
  unirest
    .get(queryURL)
    .header(
      "X-RapidAPI-Key",
      API_KEY
    )
    .end(result => {
    //data comes back as an XML string 👎//
      let xmlString = result.body 

      parseString(xmlString, function (err, data) {
        console.log(data)
        // Fire the callback here and pass in the data result
        callback(data);
      })
    })
}

現在在您的快速POST路由中,您需要傳遞回調函數

 app.post("/api/Translate", function (req, res) {
  // first you call your langTraslateJSON method
  // notice the 4th argument is now passing in the callback function
  // when your method is run it will invoke the callback you are passing here
  // and pass the data to the callback. 
  // It will then invoke the Express res.send method with this data  
  langTranslate.langTranslateJSON(
      req.body.translateFromLanguage,
      req.body.translateToLanguage,
      req.body.translateFrom, function(myDataResponse){
         res.send(myDataResponse)
      })
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM