Как дождаться запроса NEDB до sh до разрешения? Запрос иногда выходит из обещания - PullRequest
0 голосов
/ 15 апреля 2020

Я не новичок в программировании, но новичок в nodejs и webdev, поэтому, пожалуйста, go спокойно для меня.

Я уже некоторое время сталкиваюсь с проблемой.

У меня есть логин пользователя с адресом электронной почты и паролем, после чего пользователь перенаправляется на страницу «Проекты», где загружается список проектов.

authRoutes. js:

//login
router.post('/login', function(req, res) {

    _dbo.login(req.body.email, req.body.password)
        .then((user) => {
            var token = jwt.sign({id: user._id}, config.secret, {expiresIn: 86400});
            res.cookie('auth', token);
        }).then(result => {
            res.redirect('/project/');
        })
        .catch((err) => {
            console.log("Error:");
            console.log(JSON.stringify(err))
        });
});

на res.redirect ('project /');

Я звоню _dbo.getUserProjects (data.id) которые затем отображаются на странице проекта.

projectRoutes. js

router.get('/', function (req, res) {
    console.log("redirected");
    var token = req.cookies.auth;
    console.log(token);
    jwt.verify(token, config.secret, (err, data) => {
        if(err) {
            console.log("could not verify");
            res.redirect('http://localhost:3000/')
        } else {
            console.log("verified");
            console.log(data.id);
            _dbo.getUserProjects(data.id)
                .then((projects) => {
                    console.log("got projects");
                    res.render('projects', {
                            "projects": projects}
                        );
                })
                .catch((err) => {
                    console.log("Error:");
                    console.log(JSON.stringify(err));
                });
        }
    });
});

Проблема в том, что в DatabseAO. js my this .Projects.find () запрос иногда не работает, потому что его не «ожидают» и приложение зависает.

DatabseAO. js

getUserProjects(userId) {
        return new Promise((resolve, reject) => {
            this.Projects.find({ownerId: userId}, (err, docs) => {
                if(err) {
                    reject(err);
                    console.log("could not find project");
                } else {
                    resolve(docs);
                }
            });
        });
    }

Кто-нибудь сможет помочь мне исправить это, пожалуйста, и помочь объяснить это, как 11-летнему? спасибо

...