Я работаю Репозиторий демо-проекта netlify Я добавил новую лямбда-функцию 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), но возвращение данных всегда приводит к 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)
})