Я новичок Nodejs, использующий экспресс, MySQL.
В моем бизнесе создать магазин. Мне нужно проверить повторяющееся имя магазина перед вставкой в базу данных.
Если я отправлю запросы последовательно, это будет работать. Но когда я отправляю параллельные запросы (например, 1000 запросов), иногда случается дублирование названия магазина. Можете ли вы сказать мне, что я где-то сделал не так? Это мой фрагмент кода. Спасибо большое!
Router :
router.post('/store/create', async (req, res) => {
const result = await StoreController.create(req, res, req.body);
return result;
});
StoreController :
async create(req, res, params) {
try {
const store = {};
store.name = params.name;
const isExistName = await storeModel.count({ name: store.name }) > 0;
if (isExistName) {
return response(res, {}, 'Name is exist', 500);
}
await storeModel.create(store.name);
return response(res, { store }, 'Success',201);
} catch (err) {
return response(res, null, 'Fail',500);
}
}
StoreModel :
async create(name) {
const result = await this.query(`INSERT INTO stores("name") VALUES ("${name}")`);
return result;
}
app.js :
global.response = async function (res, data, message, code) {
const json = JSON.stringify({
data,
message,
code,
});
res.writeHeader(200, { 'Content-Type': 'application/json' });
res.write(json);
res.end();
return res;
};