Serverless MySQL: v1.1.0 Released
Serverless MySQL v1.1.0 adds additional transaction support capabilities to allow users to retrieve interim query results for use with future queries.
Serverless MySQL v1.1.0 adds additional transaction support to allow users to get interim query results. This is useful for getting the insertId
from previous queries when performing transactions.
Transactions are extremely simple with Serverless MySQL. You just need to start a transaction, chain your queries, and then use the commit()
method to execute them.
javascriptlet results = await mysql.transaction() .query('INSERT INTO table (x) VALUES(?)', [1]) .query('UPDATE table SET x = 1') .rollback(e => { /* do something with the error */ }) // optional .commit() // execute the queries
Now, with the new interim query results support, you can retrieve the results of the previous query by wrapping your query in a function and returning an array containing your new query's attributes:
javascriptlet results = await mysql.transaction() .query('INSERT INTO table (x) VALUES(?)', [1]) .query((r) => ['UPDATE table SET x = 1 WHERE id = ?', r.insertId]) .rollback(e => { /* do something with the error */ }) // optional .commit() // execute the queries
If you need to get the value of multiple queries, you can use the second argument instead:
javascriptlet results = await mysql.transaction() .query('INSERT INTO table (x) VALUES(?)', [1]) .query('INSERT INTO otherTable (y) VALUES(?)', [2]) .query((r,results) => [ 'UPDATE table SET x = ? WHERE id = ?', [ results[1].insertId, results[0].insertId ] ]) .rollback(e => { /* do something with the error */ }) // optional .commit() // execute the queries
Easy peasy 🍋! Check out the Serverless MySQL NPM module to see how simple it is to manage MySQL at Serverless Scale.