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

Mongodb, node, ejs - sortowanie

Aruba Cloud - Virtual Private Server VPS
0 głosów
295 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ź 294 wizyt
pytanie zadane 21 października 2016 w SQL, bazy danych przez MatexQ Bywalec (2,260 p.)
0 głosów
0 odpowiedzi 215 wizyt
pytanie zadane 29 października 2018 w JavaScript przez Alex.Ironside Stary wyjadacz (14,900 p.)
0 głosów
1 odpowiedź 468 wizyt
pytanie zadane 26 czerwca 2017 w JavaScript przez Bartlomiej Bywalec (2,480 p.)

93,281 zapytań

142,285 odpowiedzi

322,304 komentarzy

62,604 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...