Узел - Mongoose 3.6 - Сортировать запрос с заполненным полем

Я пытаюсь сделать запрос, используемый удаленной сеткой, поэтому мне придется обрабатывать сортировку (asc, desc) по всем полям.

Вот схемы:

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);

И вот запрос:

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);
};

Запрос работает при сортировке по «name» (например, Customer.name) или «address» (Customer.address), но не может заставить его работать, когда он «contact.firstName» (должен быть Customer.contact.firstName).

Четвертый параметр функции заполнения - это объект опции, который может иметь объект сортировки, но делает это:

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

не работает (кажется, сортировать список контактов на клиента).

Я совершенно новичок в мангусте (и монго). Я пытаюсь перенести проект рельсы на узел / экспресс.

Есть ли способ, которым я могу отсортировать мой запрос по contact.firstName?

Спасибо!

Редактировать: я закончил делать сортировку вручную (Array.sort), но мне действительно не нравится это решение. Сортировка синхронизирована, поэтому она блокирует основной поток node.js (поправьте меня, если я ошибаюсь).

Есть что-то, чего я не понимаю? Сортировка набора данных - для меня проблема с базой данных, а не с приложением ... У меня была большая надежда на превращение моего приложения rails в node.js, но кажется, что некоторые стандартные операции (разбивка по сетке) действительно сложно реализовать!

Ответы на вопрос(1)

Ваш ответ на вопрос