本文介紹了如何在帶異步和池的Node中使用Mysql2獲取MySQL的InsertID?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我嘗試使用帶有mysql2和pooling的異步等待,但我認為我做錯了事情。下面是我的代碼(正如我所說的,我不確定我是否在這里做事情)。
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'test',
password: '',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
const promisePool = pool.promise(); // Get a Promise wrapped instance of that pool
app.post('/api/register', (req, res) => {
async function queryDB() {
try {
const addUser = await promisePool.execute(
"INSERT INTO users (company, email, password) VALUES (?,?,?)",
['Ikea', 'Ikea@ikea.com', '123'],
)
const addAnother = await promisePool.execute(
"INSERT INTO users (company, email, password) VALUES (?,?,?)",
['Google', 'Google@google.com', '123']
)
console.log(addUser)
res.status(200).json('Users saved')
} catch (err) {
console.log(err)
res.status(409).json('User already exist')
};
}
queryDB();
})
我們的想法是,應該保存";addUser";,如果它不是唯一的,則會出現錯誤(因為SQL數據庫的電子郵件列設置為UNIQUE),然后添加另一個不會開始插入。
我不明白的是如何從addUser插入中獲取插入ID?我需要它來做第二次插入。如果我sole.log addUser,我可以看到如下所示的對象:
ResultSetHeader {
fieldCount: 0,
affectedRows: 1,
insertId: 72,
info: '',
serverStatus: 2,
warn
所以插入ID被發回給我,但我似乎達不到它。如果我嘗試獲取它,它會顯示Can‘t Read Property of Unfined。我覺得我做錯了,那么我應該如何做才能獲得intertID?
推薦答案
結果似乎在數組中。我用addUser[0].insertId
解決了它。但是,我從未讓LAST_INSERT_ID()起作用。
這篇關于如何在帶異步和池的Node中使用Mysql2獲取MySQL的InsertID?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,