JS - не редиректва към началната страница след изтриване на артикъл
Защо не ми редиректва? Врътка се и нищо...
https://github.com/ZornitsaSerbezova/SoftwareTechnologies/blob/master/JS/SoftUniBlog/controllers/article.js
Защо не ми редиректва? Врътка се и нищо...
https://github.com/ZornitsaSerbezova/SoftwareTechnologies/blob/master/JS/SoftUniBlog/controllers/article.js
Здравей.
а следкато не редиректва какво се случва ?
или се чупи нещо и ти излиза грешка в конзолата или не влиза в else -a който е на ред 98..
ако нищо не се чупи и не влиза в else то тогава е влязло в if-a което ще рече че този артикъл го няма записън като индекс в артикълите на самия потребител.. но тогава трябва да те пренасочва към страницата за изтриване(article/delete) и там да ти изписва съответната грешка..
Edit:понеже не би меше показало всички коментари чак сега видях,че вече е отговорено на този въпрос.. и май няма опция да си изтрия коментара..
Аз установих, че проблема не е с препращането. Не се изтриват артикълите от записите за юзъра в базата. и затова зацикля. Не може. Но порблемът е, че не знам как наботи това нещо изобщо.
Ето това е грешката:
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'articles' of undefined
Ако заменя това:
с това:
и това:
с това:
работи.
Здравей,
на горния ред от това "let author = article.author;" ти имаш "Article.findOneAndRemove({_id: id}).populate('author').then(article => {" което на практика казва следното
Article.findOneAndRemove({_id: id}) : накарай моделът Article да намери първия срещнат резултат като го търси по ({_id: id})..
.populate('author') : и след като го намериш намери в него полето author и го попълни с данните за този author..
.then(article => { : и след като приключиш да правиш тия работи (понеже е асинхронно и не се знае кога ще се случи точно това) вземи тия данни които ми е ги е върнало предната функция и ги сложи в локална променлива article и изпълни кода в {}
let author = article.author; казва натъпчи ми в променливата author данните за автора article.author(което би трябвало да държи данните за автора ама явно не)
и ти го заменяш с това: let author = req.user; което казва , ами автора ти е сегашния юзър... което на практика не е добра идея защото ако сегашния юзър е Admin а article е на Pesho ..
затова ти после ти се налага да го търсиш точно на кого е тоя артикъл с този код:
User.findById(author._id, (err, author) => {
author.articles.pull(id)
което мен специално ме навежда на мисълта че имаш нещо объркано в Article модела.. сега ще го огледам и него ама ще отнеме малко време :)
също така ти препоръчвам като правиш големи промени по моделите след това да изтриваш цялата база с данни и да си правиш юсерите и артикълите отначало .. понеже може да има някакви конфликти..
Аз вече смених в гитхъб с правилното решение. Не се занимавай.
да видях го това :)
като гледам проблема беше в Article model
author: {type: mongoose.Schema.Types.ObjectId, required: true}, трябва да е
author: {type: mongoose.Schema.Types.ObjectId, required: true, ref: 'User'}
това ref: 'User' напрактика казва на базата данни че това ид всъщност е ид от таблицата User (така наречената релация)
радвам се ,че сама си се справила :)
Приятен ден.
Мдааа, точно там е бил проблемът, но за съжаление, не се справих сама :)