Я ни в коем случае не разработчик! Тем не менее, я пытаюсь собрать демонстрационное приложение для своего стартапа.
У меня много проблем (дни и дни), пытаясь отсортировать результаты из mon goose "find". Я долго искал ответ, но нашел эту работу. Вот фрагмент кода, который НЕ работает:
const warehouses = require("../models/warehousesModel.js");
merchantWarehouseQuotes = (req, res) => {
let p = new Promise(function(resolve, reject) {
resolve(warehouses.find({location: req.body.location}).exec());
});
p.then((localWarehouses) => {
let sortMethod = req.body.warehouseSorting;
localWarehouses.forEach(s => {
if (sortMethod == "price") {
s.sortingMetric = s.pricePerCubicFoot;
} else {
s.sortingMetric = -s.metrics;
};
s.save();
});
return localWarehouses.sort({sortingMetric: 1}).exec();
})
.then((localWarehouses) => {
console.log(localWarehouses);
});
};
Приложение вылетает при сортировке, которую я пытаюсь выполнить на 5-й строчке из последней строки кода.
Как ни досадно, следующий код работает нормально . Единственная проблема заключается в том, что он выполняет сортировку ДО того, как я определил метрику сортировки c, которая для меня бесполезна.
merchantWarehouseQuotes = (req, res) => {
let p = new Promise(function(resolve, reject) {
resolve(warehouses.find({location: req.body.location}).sort({sortingMetric: 1}).exec());
});
p.then((localWarehouses) => {
console.log(localWarehouses)
let sortMethod = req.body.warehouseSorting;
localWarehouses.forEach(s => {
if (sortMethod == "price") {
s.sortingMetric = s.pricePerCubicFoot;
} else {
s.sortingMetric = -s.metrics;
};
s.save();
});
return localWarehouses;
})
.then((localWarehouses) => {
console.log(localWarehouses);
});
};
Здесь сортировка происходит во второй строке сверху. Но, как я уже сказал, здесь не используются соответствующие метрики c для сортировки.
Наконец, я пробовал всевозможные варианты кода, чтобы заставить его работать. Первый фрагмент (который не работает) - лишь один из примеров моих проблем!