我是使用mysql的新手Nodejs。 在我的生意中,创建一家商店。在插入数据库之前,我需要检查重复存储的名称。
如果我以顺序方式发送请求,它将起作用。但是,当我发送并发请求(例如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;
};