Ordina in base alla proprietà
Domanda
Come posso fare qualcosa come:
sort('object.property')
(l'oggetto è definito come tipo 'json' nel modello)
con linea di galleggiamento?
Nota che sto usando l'ultima build stabile 0.9. ~ che non ha ancora associazioni.
Soluzione
Un test rapido ha mostrato che l'adattatore sails-mongo
consente l'ordinamento degli attributi JSON fuori dalla scatola (è trasparente raggiunto al database del mongo).
Per prima cosa ho creato un controller e un modello in bianco usando:
sails generate foo
.
Quindi ho definito una proprietà data
con tipo json
sul mio modello:
module.exports = {
attributes: {
data: 'json'
}
};
.
Ho creato diversi oggetti facendo un HTTP POST
con dati come questo (ho aumentato il valore di ordinamento):
{
"data": {
"sort": 1
}
}
.
Successivamente ho ricevuto la mia collezione usando questa richiesta GET
:
http://localhost:1337/foo?sort=data.sort+desc
che comporterà internamente in una chiamata come
Foo.find().sort('data.sort desc').exec(callback);
.
La risposta del server è ora ordinata per la proprietà data:
[
{
"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"
}
]
.