Ich erstellte eine Sails-Anwendung mit zwei Modellen Veröffentlichung und Arbeitsblatt. Sie haben eine Eins-zu-Eins-Beziehung. Sails-postgresql ist der Adapter, den ich benutze. Ich benutze Waterline Orm, um eine Anfrage an die Datenbank auszulösen. Ich bin, wenn ich versuche, Publikationsdaten zusammen mit Arbeitsblatt zu laden und dann die Datensätze abhängig von einem Feld im Arbeitsblatt mit sort() zu sortieren, bekomme ich einen Fehler.Sortieren besiedelten Datensatz in Segeln Waterline
Mein Modell ist:
Publication.js
module.exports = {
attributes: {
id: {
type: 'integer'
unique: true
},
worksheetId: {
type: 'integer',
model : 'worksheet'
},
status: {
type: 'string',
defaultsTo: 'active',
in : ['active', 'disabled'],
}
}
}
Worksheet.js
module.exports = {
attributes: {
id: {
type: 'integer',
unique: true
},
name: 'string',
orderWeight: {
type: 'integer',
defaultsTo: 0
}
}
}
So jetzt habe ich die ganze Publikation laden möchten, wo Status "aktiv" ist und Arbeitsblatt füllen in den Daten.
ich die Ausführung der Abfrage So:
Publication.find({
where: {
status: 'active'
}
})
.populate('worksheetId').limit(1)
.exec(function (error, publications) {
})
und ich bin ein Daten wie immer:
{
id : 1,
status : "active",
worksheetId : {
id : 1
name : "test",
orderWeight : 10
}
}
So bis jetzt es ist alles gut funktioniert. Jetzt möchte ich das Limit auf 10 erhöhen und die Daten in Abhängigkeit von "orderWeight" sortieren, das in den Daten enthalten ist. Anfangs habe ich die ganzen Daten in Abhängigkeit von der Veröffentlichungs-ID sortiert und die Abfrage funktioniert.
Publication.find({
where: {
status: 'active'
}
})
.populate('worksheetId').sort('id ASC').limit(10)
.exec(function (error, publications) {
})
So feuerte ich ähnliche Abfrage der Daten auf „orderWeight“
Publication.find({
where: {
status: 'active'
}
})
.populate('worksheetId').sort('worksheetId.orderWeight ASC').limit(10)
.exec(function (error, publications) {
})
Und diese Abfrage gibt mir Fehler zu sortieren, dass worksheetId.orderWeight nicht eine Spalte auf der Veröffentlichung Tabelle ist. Daher möchte ich diese Sortierabfrage auf die aufgefüllten Daten und nicht auf die Publikationstabelle anwenden.
Bitte lassen Sie mich wissen, wie ich mein erwartetes Ergebnis bekommen kann.
Neben der Methode sort() möchte ich auch einen Befehl find zu den aufgefüllten Daten ausführen, um die Publikation zu erhalten, in der der Name des Arbeitsblatts mit einem bestimmten Schlüssel übereinstimmt.