Node - Mongoose 3.6 - Abfrage mit ausgefülltem Feld sortieren

Ich versuche, eine Abfrage zu machen, die von einem entfernten Grid verwendet wird, daher muss ich die Sortierung (aufsteigend, absteigend) für alle Felder durchführen.

Hier sind die Schemata:

var customerSchema = new mongoose.Schema({
status: {type: mongoose.Schema.Types.ObjectId, ref: 'Status'},
contact: {type: mongoose.Schema.Types.ObjectId, ref: 'Contact'}
}, { collection: 'Customer' });

customerSchema.virtual('contactName').get(function () {
   if (this.contact && this.contact.get) {
       return this.contact.get('firstName') + ' ' + this.contact.get('lastName');
   }

   return '';
});

customerSchema.virtual('statusName').get(function () {
   if (this.status && this.status.get) {
       return this.status.get('name');
   }

   return '';
});

customerSchema.set('toJSON', { virtuals: true });
customerSchema.set('toObject', { virtuals: true });
mongoose.model('Customer', customerSchema);

// STATUS
var statusSchema = new mongoose.Schema({}, { collection: 'Status' });
mongoose.model('Status', statusSchema);

// CONTACT
var contactSchema = new mongoose.Schema({
    firstName: String,
    lastName: String
}, { collection: 'Contact' });
mongoose.model('Contact', contactSchema);

Und hier ist die Abfrage:

exports.customerList = function (predicate ,callback){
if (!predicate) predicate = 'name';
var Customers = mongoose.model( 'Customer' );

Customers.find()
    .select('name phone address status contact contactName statusName')
    .populate('status', 'name')
    .populate('contact', 'firstName lastName')
    .sort(predicate)
    .exec(callback);
};

Die Abfrage funktioniert beim Sortieren nach "Name" (also "Kundenname") oder "Adresse" ("Kundenname"), kann jedoch nicht ausgeführt werden, wenn es sich um "contact.firstName" handelt (sollte "Customer.contact.firstName" lauten).

Der vierte Parameter der Populate-Funktion ist ein Optionsobjekt, das ein Sortierobjekt haben kann.

.populate('contact', 'firstName lastName', null, { sort {'firstName': 1}})

funktioniert nicht (scheint die Kontaktliste nach Kunden zu sortieren).

Ich bin völlig neu für Mungo (und Mongo). Ich versuche, ein Schienenprojekt zum Knoten / zum Eil zu tragen.

Gibt es eine Möglichkeit, meine Anfrage nach contact.firstName zu sortieren?

Vielen Dank!

Bearbeiten: Ich habe meine Sortierung manuell durchgeführt (Array.sort), aber ich mag diese Lösung nicht wirklich. Die Sortierung ist synchronisiert, sodass der Node.js-Hauptthread blockiert wird (korrigieren Sie mich, wenn ich falsch liege).

Gibt es etwas, das ich nicht verstehe? Das Sortieren von Datensätzen ist für mich ein Datenbankproblem und keine Anwendung ... Ich hatte große Hoffnung, meine Rails-Anwendung in node.js zu verwandeln, aber es scheint, dass einige Standardoperationen (Auslagern eines Rasters) wirklich schwer zu implementieren sind!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage