Я просматривал документы node-postgres и не нашел ссылки на события onSuccess
и onFailure
, а только объекты err
и res
в обратном вызове (но Возможно, я упустил это из виду):
client.query(text, values, (err, res) => {
if (err) {
console.log(err.stack)
} else {
console.log(res.rows[0])
// { name: 'brianc', email: 'brian.m.carlson@gmail.com' }
}
})
Тем не менее, он также поддерживает версию с обещанием, то есть вам не нужно обещать это самостоятельно:
try {
const res = await pool.query(text, values)
console.log(res.rows[0])
// { name: 'brianc', email: 'brian.m.carlson@gmail.com' }
} catch(err) {
console.log(err.stack)
}
Это означает, что ваша searchUser
функция должна выглядеть следующим образом:
const searchUser = username => {
return await psql.query('SELECT username FROM utilitator where username LIKE $1', [`%${username}%`])
};
Наконец, в вашем обработчике, поскольку вы уже используете Node 8, вы не должны смешивать обещания и обратные вызовы вместе. Просто верните тело в строковом формате JSON внутри вашего объекта ответа, например так (обработка ошибок для простоты опущена):
exports.handler = async (event) => {
//const body = JSON.parse(event.body);
const username = event.username;
const result = await searchUser(username)
if (result == "err") {
return {
"statusCode": 404,
"isBase64Encoded": false,
"body": JSON.stringify({message: 'User not found'}),
}
}
return {
"statusCode": 200,
"isBase64Encoded": false,
"body": JSON.stringify(result),
}
};