• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Mongodb, node, ejs - sortowanie

VPS Starter Arubacloud
0 głosów
271 wizyt
pytanie zadane 1 kwietnia 2018 w SQL, bazy danych przez Dzony66 Początkujący (310 p.)
edycja 1 kwietnia 2018 przez Dzony66

Hej, a więc mam dwa modele, które chce posortować od najnowszego do najstarszego. Aktualnie mongo sortuje na odwrót. Nie wiem czy tego sorta nie wkładam w złe miejsce :/
modele:

var plytySchema = new mongoose.Schema({
   name: String,
   image: String,
   price: Number,
   opis: String,
   createdAt: {type: Date, default: Date.now}

 

var artSchema = new mongoose.Schema({
   name1: String,
   image1: String,
   opis1: String,
   createdAt: {type: Date, default: Date.now}
    
});





Poniżej ścieżka

router.get('/', function(req, res) {
    plytyy.find(function (err, plytaNowa) {
        if(err) {
            console.log(err);
        }
        art.find(function (err, art) {
            if(!err)
            res.render('index', {
                albumy: plytaNowa,
                art: art
            });
        }).sort({_id: -1}).exec(function(err, art) {
        if(err) {
            console.log(err);
        }
        });
    }).sort({_id: -1}).exec(function(err, albumy) {
        if(err) {
            console.log(err);
        }
    
    });
});

1 odpowiedź

+1 głos
odpowiedź 1 kwietnia 2018 przez pietrzakacper Mądrala (7,480 p.)
wybrane 1 kwietnia 2018 przez Dzony66
 
Najlepsza

Nie jestem ekspertem od działania Mongoose'a ale wydaje mi się, że callback do find nie przyjmie jako argument posortowanych wyników. Pożądany efekt uzyskasz gdy responsa wyślesz w callbacku do exec. Ale... Rzecz która mocno rzuca się w oczy to tzw. callback hell który u Ciebie zaistniał. Nie po to do JavaScriptu wrzucono Promise'y i Async/Await żebyśmy teraz musieli czytać tak dziwnie zagnieżdżony kod xd

Ja bym tak to napisał korzystając z nowoczesnego JS'a. Pozwoliłem sobie zmienić nazewnictwo na angielskie bo polskich nazwa nie zdzierżę :) Tobie też polecam nauczyć się angielskiego bo jest on standardem w branży.

router.get('/', async (req, res) => {
    try {
      const records = await Record.find().sort({_id: -1})
      const covers = await Cover.find().sort({_id: -1})

      res.render('index', {records, covers})
    } catch(error) {
      console.log(error)
    }
})

Serio polecam nauczyć się najnowszych standardów JavaScriptu, ulatwiają robotę szczególnie przy asynchronicznych rzeczach.

1
komentarz 1 kwietnia 2018 przez Dzony66 Początkujący (310 p.)
Co prawda Twój kod wywalał jakiś błąd przy async aleeeeee naprowadził mnie jak to zrobić i gdzie w moim chaosie jest błąd :D

 

Kiedyś nauczę się najnowszych standardów, obiecuje, ale póki co zaczynam naukę więc piszę tak ooo dla siebie (dlatego pisze sobie vary po polsku). W inglisz umiem! :D Dzięki za odpowiedź :D
komentarz 2 kwietnia 2018 przez pietrzakacper Mądrala (7,480 p.)
Wywala błąd przy async bo pewnie masz starą wersje Node'a :)

Podobne pytania

0 głosów
1 odpowiedź 254 wizyt
pytanie zadane 21 października 2016 w SQL, bazy danych przez MatexQ Bywalec (2,260 p.)
0 głosów
0 odpowiedzi 201 wizyt
pytanie zadane 29 października 2018 w JavaScript przez Alex.Ironside Stary wyjadacz (14,900 p.)
0 głosów
1 odpowiedź 334 wizyt
pytanie zadane 26 czerwca 2017 w JavaScript przez Bartlomiej Bywalec (2,480 p.)

92,833 zapytań

141,777 odpowiedzi

320,824 komentarzy

62,164 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...