Sortieren Sie nach Eigenschaft
Frage
Wie kann ich so etwas tun:
sort('object.property')
(Objekt ist im Modell als Typ „json“ definiert)
mit Wasserlinie?
Beachten Sie, dass ich den neuesten stabilen Build 0.9.~ verwende, der noch keine Zuordnungen hat.
Lösung
Ein kurzer Test zeigte das sails-mongo
Der Adapter ermöglicht das standardmäßige Sortieren von JSON-Attributen (es wird transparent auf die Mongo-Datenbank zugegriffen).
Zuerst habe ich einen leeren Controller und ein Modell erstellt mit:
sails generate foo
Dann habe ich a definiert data
Eigenschaft mit Typ json
an meinem Modell:
module.exports = {
attributes: {
data: 'json'
}
};
Ich habe mehrere Objekte erstellt, indem ich a HTTP POST
mit Daten wie diesen (ich habe den Sortierwert erhöht):
{
"data": {
"sort": 1
}
}
Anschließend habe ich damit meine Sammlung abgerufen GET
Anfrage:
http://localhost:1337/foo?sort=data.sort+desc
was intern zu einem Anruf wie folgt führt
Foo.find().sort('data.sort desc').exec(callback);
Die Serverantwort ist nun nach der angegebenen Eigenschaft sortiert:
[
{
"data": {
"sort": 3
},
"createdAt": "2014-04-13T09:35:49.734Z",
"updatedAt": "2014-04-13T09:35:49.734Z",
"id": "534a5a7553f1e98e09d1d86b"
},
{
"data": {
"sort": 2
},
"createdAt": "2014-04-13T09:35:45.814Z",
"updatedAt": "2014-04-13T09:35:45.814Z",
"id": "534a5a7153f1e98e09d1d86a"
},
{
"data": {
"sort": 1
},
"createdAt": "2014-04-13T09:35:41.958Z",
"updatedAt": "2014-04-13T09:35:41.958Z",
"id": "534a5a6d53f1e98e09d1d869"
}
]