Повторяющиеся данные при отправке огромных одновременных запросов - PullRequest
0 голосов
/ 04 июня 2019

Я новичок 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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...