Преобразование объекта express -сессии в строку - PullRequest
0 голосов
/ 26 апреля 2020

Я использую express -сессион для передачи переменной с именем _id. Идея состоит в том, чтобы иметь корзину заказов, и если пользователь выбирает второй прием пищи, блюдо сохраняется в массиве, который является частью того же _id (это означает, что вы можете иметь больше блюд в 1 заказе). Проблема, с которой я сталкиваюсь, заключается в том, что если я пытаюсь найти byIdAndUpdate (req.session.id), я получаю сообщение об ошибке: Ошибка: переданный аргумент должен быть одной строкой из 12 байтов или строкой из 24 шестнадцатеричных символов. Но если я изменяю его на строку, это не тот же идентификатор при преобразовании из объекта в строку. Когда я console.log (req.session._id), req.session._id соответствует _id. Мой вопрос заключается в том, как преобразовать объект req.session.id в строку без изменения значения или как реализовать его с помощью mon goose без получения ошибки, написанной выше.

Вот код:

app.post("/menu/order", middlewareObject.isLoggedin, function (req, res) {
    const order = new Order({
        _id: mongoose.Types.ObjectId(),
        user: req.user._id,
        order: {
            meal: req.body.foodID,
            quantity: req.body.quantity
        }
    })


    if (req.session._id != undefined) {
        Order.findByIdAndUpdate(JSON.stringify(req.session.id), {
            $push: {
                order: {
                    meal: order.meal,
                    quantity: order.quantity
                }
            }
        }, function (err, updateOrder) {
            if (err) {
                console.log(err);
            } else {
                res.redirect("back");
            }
        })
    } else {
        Order.create(order, function (err, newOrder) {
            if (err) {
                console.log(err)
            } else {

                req.session._id = newOrder._id;
                console.log(req.session._id)
                res.redirect("back");
            }
        })
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...