Express и Mongoose не могут обрабатывать несколько запросов одновременно - PullRequest
0 голосов
/ 13 апреля 2019

Таким образом, у меня есть вызов API /add, который добавит автомобиль на мой перекресток, когда POST к нему. Поэтому в настоящее время я пишу пакет для добавления нескольких машин за короткий промежуток времени, вызывая команду curl в фоновом режиме с & в оболочке UNIX. Согласно моему журналу, все запросы (всего 125) успешно отправлены на сервер, и сервер получил его правильно. Но независимо от того, сколько раз я пробую перекресток, у меня не будет 125 машин, иногда около 80, иногда у меня только 40.

Я, наверное, догадываюсь, что это мангуст делает эту ошибку. Я предполагаю, что, возможно, из-за того, что один запрос добавляет машину в MongoDB, поступил другой запрос, поэтому, вероятно, из-за этого автомобиль второго запроса не добавляется в базу данных.

Следующее является частью моего кода. Я пытаюсь найти способ, чтобы все мои машины (запросы) были правильно добавлены в базу данных.

db.car.create({
    license: license,
    type: "small",
    speed: 60
}, (rtd) => {
    var id = rtd._id;
    db.scene.add(nowCIns, req.body.position, req.body.direction, id, (rtd2) => {
        res.json(rtd2);
    })
})
//db.js
car: {
    create: (obj, cb) => {
        cb = cb || function (cbr) { };
        car.create(obj, (err, res) => cb(res.toObject()));
    },
    modify: (obj, cb) => {
        cb = cb || function (cbr) { };
        car.updateOne({ _id: obj._id }, obj, (err, res) => cb(res));
    },
    get: (id, cb) => {
        cb = cb || function (cbr) { };
        car.findOne({ _id: id }).lean().exec((err, res) => {
            cb(res);
        })
    },
    getAll: (cb) => {
        cb = cb || function (cbr) { };
        car.find({}).lean().exec((err, res) => {
            cb(res);
        })
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...