簡體   English   中英

無法在 Netlify 中返回 mysql db 查詢結果 Lambda function

[英]Can't return mysql db query results in Netlify Lambda function

我正在處理a.netlify 演示項目回購我添加了一個新的 lambda function mytest.js

在我的測試中,我正在連接到mytest數據庫並嘗試返回查詢結果。

const mysql = require('mysql')
const pool = mysql.createPool({ ...config data... })

exports.handler = (event, context, callback) => {

  context.callbackWaitsForEmptyEventLoop = false

  try {
    pool.getConnection(function(err, connection) {
      connection.query('SELECT * FROM mytable order by DatePublished desc', function(error, results, fields) {
        connection.release()

          if (error) {
            console.log('calling callback with error')
            callback(error);
          }
          else {
            console.log(`calling callback with results`)
            console.log(results);
            callback(null, {
              statusCode: 200,
              body: results
            })
          }             
      })
    })
  } 
  catch (e) {
      console.log('errored in try catch')
      console.log(e)
  } 
}

當我部署它並點擊 url 時,我可以看到對數據庫的查詢成功並且我看到結果已注銷(在 .netlify web ui 日志中)但返回數據總是導致 502。

我在 postman 中嘗試了同樣的事情,但沒有得到任何回報。

當我body: 'test string'硬編碼時,它將正確返回“test string”,所以我知道 function 否則可以工作,所以我真的很困惑為什么結果在記錄時可用但在回調中不可用。

日志中的results是一個由 208 個非常簡單的對象組成的數組,這些對象具有大約 7 個屬性,每個屬性都是小數據,例如 int 和 url 字符串

對此有任何幫助,我們將不勝感激。

接受答案后更新代碼 - 還添加了 CORS 標題,因為后來出現了

        callback(null, {
          statusCode: 200,
          headers: {
            'Access-Control-Allow-Origin': '*',
            'Content-Type': 'application/json'
          },
          body: JSON.stringify(results)
        })

嘗試在結果上使用 JSON.stringify,正文應該是一個字符串。

暫無
暫無

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

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