无法在 Netlify Lambda 函数中 return mysql db 查询结果

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

我正在处理 a netlify demo project repo 我添加了一个新的 lambda 函数 mytest.js

mytest 中,我正在连接到 mysql 数据库并尝试 return 查询结果。

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 日志中)但是 returning 数据总是导致 502。

我在邮递员中尝试了同样的事情,但在 body 中没有得到任何回报。

当我对 body: 'test string' 进行硬编码时,它会 return "test string" 正确,所以我知道该功能在其他情况下可以正常工作,所以我真的很困惑为什么结果在记录时可用但不在回调中。

日志中的

results 是一个包含 208 个非常简单 objects 的数组,其中包含大约 7 个属性,每个属性都是小数据,例如 int 和 url 字符串

如有任何帮助,我们将不胜感激。

接受答案后的更新代码 - 还添加了 CORS headers 因为后来出现了

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

尝试在结果上使用 JSON.stringify,正文应该是一个字符串。