Veröffentlicht 27. Februar 20205 j Ich möchte den Datenbankrequest sortieren. Zum bloßen herausnehmen, habe ich das in node.js mit der express api und dem monk framework für die mongodb so gemacht: app.get("/getHighscore", (req, res) => { gotHighscore .find() .then(gotHighscore => { res.json(gotHighscore); }); }); Chromelog: 0: {_id: "5e57afae67db842ff4bf806b", score: "150", name: "Hendel", created: "2020-02-27T12:01:50.173Z"} 1: {_id: "5e57b4fb67db842ff4bf806c", score: "70", name: "123", created: "2020-02-27T12:24:27.351Z"} 2: {_id: "5e57b63667db842ff4bf806d", score: "110", name: "iseemypee", created: "2020-02-27T12:29:42... Natürlich sollen die Highscores aber sortiert sein. Dafür habe ich folgende Methode verwendet: app.get("/getHighscore", (req, res) => { gotHigscore .find({}, {sort : {score: -1}}) .then(gotHighscore => { res.json(gotHighscore); }); }); Die Highscores werden aber nicht wie erwartet sortiert: 0: {_id: "5e57b4fb67db842ff4bf806c", score: "70", name: "123", created: "2020-02-27T12:24:27.351Z"} 1: {_id: "5e57afae67db842ff4bf806b", score: "150", name: "Hendel", created: "2020-02-27T12:01:50.173Z"} 2: {_id: "5e57b63667db842ff4bf806d", score: "110", name: "iseemypee", created: "2020-02-27T12:29:42.25... Hat jemand eine Idee, was ich falsch mache? Besten Dank und liebe Grüße!
27. Februar 20205 j Das Problem hier ist, dass SCORE ein String ist. Und im String ist es absteigend sortiert. Erst nach der ersten Stelle ( 70 > 150 >= 110), dann entsprechend die beiden, die mit 1 anfangen nach der zweiten Stelle (150 > 110) .. Ändere den Type von SCORE von "string" auf "number" und es sollte funktionieren. //Edit: Bei mongoose könntest du direkt das Schema anpassen - wie das bei monk geht, weiss ich nicht. Bei MongoDB kannst du - wenn ich mich nicht irre - $convert nutzen, da hilft die Doku sicher weiter. Die unschönste Methode wäre, beim Auslesen der Daten nochmal alle zu durchlaufen und jedes mal score = +score den Typ zu ändern. (Das + vor eine Variable führt im JavaScript dazu, dass diese Variable zu einem int konvertiert wird). Bearbeitet 27. Februar 20205 j von Memento
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.