Я хочу спросить, что вы думаете о лучших методах сортировки объектов в веб-приложениях expressjs + mongodb (mongoose).
Допустим, у моей модели продукта четыре атрибута:
var ProductSchema = new mongoose.Schema({
name: String, // "Summer T-shirt"
price: Number, // 100
salefrom: Date, // ISODate("2018-12-25T10:15:25.338Z")
colors: [String] // "red", "blue", "black"
});
На странице списка продуктов я хочу реализовать функции сортировки, как показано ниже:
Думаю, есть несколько способов добиться этого. Как вы думаете, что лучше всего?
Сначала я попробовал это решение.
Для Новейший сорт и Самый дешевый сорт mongoose.find (). Sort () очень прост в использовании с меньшим количеством кода.
Однако Сортировка цветовых вариаций не может быть выполнен с помощью mongoose.sort () (поскольку он не может сортировать по array.length), поэтому я должен использовать другой метод: mongoose.aggregate ().
Затем я попробовал это решение.
Сначала получение массива продуктов с помощью mongoose.find (), затем сортировка продуктов с помощью функции Array.prototype.sort () с использованием compare (), например:
function compare(a,b) {
if (a.colors.length < b.colors.length)
return -1;
if (a.colors.length > b.colors.length)
return 1;
return 0;
}
Я думаю, что это решение настолько гибкое, что я могу сделать более сложную функцию сортировки, которую я не могу сделать с помощью встроенного метода mongodb (mongoose).
Однако с этим решением мне нужно написать много кода по сравнению с решением A.
Честно говоря, я не пробовал это решение, но поскольку javascript является языком как для серверной, так и для клиентской стороны, я думаю, что это вариант для сортировки.
Какое решение вы считаете лучшим с точки зрения производительности, гибкости и удобства обслуживания?
Пожалуйста, поделитесь со мной своими мыслями.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Раз уж вы спросили мнение .. Просто пытаюсь поделиться своим опытом работы с такими приложениями. :)
.sort(), и это отлично работает.Есть места, где я не использую mongo .sort(), но сортирую результаты с помощью Javascript. Здесь есть два момента - может помочь Array.prototype.sort() или другие средства.
а. Вы переносите данные в браузер и сортируете / или выполняете другие действия. Проще говоря, используйте ресурсы на стороне клиента (браузеры). Это где
б. Вы не можете передать данные клиенту, и вам нужно будет показать только часть их после некоторой фильтрации. Но для сортировки / других операций нужны полные данные. В этом случае вы сохраняете sort / other ops внутри кода NodeJS и передаете только результат на сторону клиента.
Пункт a поможет вам использовать ресурсы на стороне клиента. Я использую это, когда это возможно.
Конечно, дайте нам знать, как это происходит :)
Извините, но я не понимаю, как данные о моих товарах передаются в HTML: я сказал моя страница продукта показывает большую часть данных продукта, но на самом деле product.salefrom не отображается в браузере. В этом случае, если я все еще хочу выполнить сортировку на стороне клиента, мне нужно скрыто перенести данные продажи в html. Я прав?
Какие бы данные вы ни вводили в браузер (html, js и т. д.), Они не скрываются. Итак, в этом случае вам нужно выполнять действия на бэкэнде в коде nodejs.
Спасибо, что поделились своим опытом! В этом случае на моей странице продукта отображается большая часть данных о продукте, поэтому я попробую ваш способ Пункт а. Кроме того, я не установил индексы для своей ProductSchema, хотя знаю, что очень важно добиться хорошей производительности, еще раз спасибо за ваш ответ :)