Обновление узла js на основе токена JWT - PullRequest
0 голосов
/ 02 января 2019

В узле JS я пытаюсь обновить данные в базе данных

Но я не хочу отправлять какой-либо идентификатор в параметре, вместо этого я могу взять токен, тогда я обновлю

это мой код обновления в контроллере

router.put('/', VerifyToken, function (req, res) {
    var token = req.headers['x-access-token'];
    decoded = jwt.verify(token, config.secret);
    User.findById(decoded.id, { password: 0 }, function (err, user) {
        if (err) return res.status(500).send("There was a problem finding the user.");
        if (!user) return res.status(404).send("No user found.");
        var curtime = dateFormat(now, "HH:MM:ss"),
            curstatus = 'Test';
        const reportData = new Report({
            username: user.username,
            time: curtime,
            status: curstatus
        });
        Report.findByIdAndUpdate({ username : user.username},reportData)
            .then(report => {
                if (!report) {
                    return res.status(404).send({
                        message: "Report not found with Username " + user.username
                    });
                }
                res.send(report);
            }).catch(err => {
                if (err.kind === 'ObjectId') {
                    return res.status(404).send({
                        message: "Report not found with Username " + user.username
                    });
                }
                return res.status(500).send({
                    message: "Error updating report with Username " + user.username
                });
            });

    });

});

это всегда возвращает это единственное сообщение: «Отчет не найден с именем пользователя» + user.username

1 Ответ

0 голосов
/ 02 января 2019

findByIdAndUpdate находит документы по полю _id.См. findByIdAndUpdate .Первый параметр должен быть значением поля _id.username не _id.

Попробуйте,

const reportData = {
   username: user.username,
   time: curtime,
   status: curstatus
}
Report.findOneAndUpdate({username : user.username}, reportData)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...