To make synchronous database queries with Node.js, we use the synchronize
module.
For instance, we write
const express = require("express");
const bodyParser = require("body-parser");
const mysql = require("mysql");
const sync = require("synchronize");
const db = mysql.createConnection({
host: "localhost",
user: "user",
password: "password",
database: "database",
});
db.connect((err) => {
if (err) {
console.error("error connecting: " + err.stack);
return;
}
const save = async () => {
const post = { id: newId };
const query = sync.await(
db.query("INSERT INTO mainTable SET ?", post, sync.defer())
);
const newId = query.insertId;
const post = { foreignKey: newId };
db.query("INSERT INTO subTable SET ?", post, (err, result) => {
if (err) {
throw err;
}
});
};
});
to define the save
function.
In it, we call sync.await
to wait for the query to finish before we move to the next line of code.
We have the save
function in the connect
callback so we only make queries when the connection is established.