JS - не редиректва към началната страница след изтриване на артикъл

JS - не редиректва към началната страница след изтриване на артикъл

worminer avatar worminer 104 Точки

Здравей.

а следкато не редиректва какво се случва ?

или се чупи нещо и ти излиза грешка в конзолата или не влиза в else -a който е на ред 98..

ако нищо не се чупи и не влиза в else то тогава е влязло в if-a което ще рече че този артикъл го няма записън като индекс в артикълите на самия потребител.. но тогава трябва да те пренасочва към страницата за изтриване(article/delete) и там да ти изписва съответната грешка..

Edit:понеже не би меше показало всички коментари чак сега видях,че вече е отговорено на този въпрос.. и май няма опция да си изтрия коментара.. 

0
16/11/2016 21:45:42
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Аз установих, че проблема не е с препращането. Не се изтриват артикълите от записите за юзъра в базата. и затова зацикля. Не може. Но порблемът е, че не знам как наботи това нещо изобщо.

Ето това е грешката:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'articles' of undefined

Ако заменя това:

let author = article.author;

с това:

let author = req.user

и това:

author.articles.splice(index, count);

с това:

User.findById(author._id, (err, author) => {
    author.articles.pull(id)

 

работи.

0
17/11/2016 07:37:00
worminer avatar worminer 104 Точки

Здравей,
на горния ред от това "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 модела.. сега ще го огледам и него ама ще отнеме малко време :)

също така ти препоръчвам като правиш големи промени по моделите след това да изтриваш цялата база с данни и да си правиш юсерите и артикълите отначало .. понеже може да има някакви конфликти..

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Аз вече смених в гитхъб с правилното решение. Не се занимавай.

0
worminer avatar worminer 104 Точки

да видях го това :)
като гледам проблема беше в Article model
author: {type: mongoose.Schema.Types.ObjectId, required: true}, трябва да е

author: {type: mongoose.Schema.Types.ObjectId, required: true, ref: 'User'}

това ref: 'User'  напрактика казва на базата данни че това ид всъщност е ид от таблицата User (така наречената релация)

радвам се ,че сама си се справила :)
Приятен ден.

1
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Мдааа, точно там е бил проблемът, но за съжаление, не се справих сама :)

0