Я не новичок в программировании, но новичок в 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-летнему? спасибо