发送大量并发请求时重复数据

时间:2019-06-04 11:08:00

标签: mysql node.js express

我是使用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;
};

0 个答案:

没有答案