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



我正在处理一个网络化演示项目存储库,我添加了一个新的 lambda 函数mytest.js

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

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。

我在邮递员身上尝试了同样的事情,但身体里什么也没得到。

当我body: 'test string'硬编码时,它将正确返回"测试字符串",因此我知道该函数在其他情况下有效,所以我真的很困惑为什么结果在记录时可用但不在回调中。

日志中的results是一个由 208 个非常简单的对象组成的数组,每个对象大约有 7 个属性,所有这些对象都是小数据,如整数和 url 字符串

任何这方面的帮助将不胜感激。

接受答案后更新代码 - 还添加了 CORS 标头,因为之后出现了

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

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

相关内容

  • 没有找到相关文章

最新更新