Я использую node-mysql2 с пулом соединений и пределом соединения 10. Когда я перезапускаю приложение, результаты хорошие - они совпадают с тем, что у меня есть на БД. Но когда я начинаю вставлять новые записи и повторять одни и те же запросы выбора, я получаю прерывистые результаты, пропуская последнюю добавленную запись.
Если я проверю базу данных напрямую, я смогу увидеть записи, которые я только что добавил через свое приложение. Это только приложение, которое не может его как-то увидеть.
Я думаю, что это ошибка, но вот как у меня настроен код:
module.exports.getDB = function (dbName) {
if (!(dbName in dbs)) {
console.log(`Initiating ${dbName}`);
let config = dbConfigs[dbName];
dbs[dbName] = mysql.createPool({
host: config.host,
port: config.port || 3306,
user: config.user,
password: config.password,
connectionLimit: 10,
database: config.database,
debug: config.debug
});
}
return dbs[dbName]; // I just initialize each database once
};
Это мой запрос на выборку:
let db = dbs.getDB('myDb');
const [rows] = await db.query(`my query`);
console.log(rows[0]); // this one starts to show my results inconsistently once I insert records
И это мой запрос на вставку:
module.exports = {
addNote: async function(action, note, userID, expID) {
let db = dbs.getDB('myDb');
await db.query(`INSERT INTO experiment_notes (experiment_id, action, created_by, note)
VALUES (?, ?, ?, ?)`, [expID, action, userID, note]);
}
};
Если я установлю connectionLimit на 1, я не смогу воспроизвести проблему ... по крайней мере, пока
Любая идея что я делаю не так?