問題在於db.query
使用回呼樣式而不是promise樣式。你需要將其轉(zhuǎn)換為使用promises。
一種方法是使用Util.promisify
...
const util = require('util'); const mysql = require('mysql'); const db = mysql.createConnection({ host: "*****", port: *****, user: "*****", password: "*****", database: "*****", }); // 將db.query轉(zhuǎn)換為返回promise的函數(shù) const promisifiedQuery = util.promisify(db.query); export const lambdaHandler = async (event: any, context: any,) => { const user = { uid: event.request.userAttributes.sub, username: event.request.userAttributes.nickname, email: event.request.userAttributes.email, }; console.log("before query"); // 順便說(shuō)一下,這樣做是不好的。請(qǐng)閱讀有關(guān)如何避免SQL注入的內(nèi)容。 const query = `INSERT INTO users (Uid, Username, Email) VALUES (${user.uid}, ${user.username}, ${user.email})`; await promisifiedQuery(query).then(result => { console.log("query response: " + result) console.log("after query") }).catch(console.error) return event; };