【发布时间】:2020-10-30 11:31:30
【问题描述】:
我绝不是开发人员!不过,我正在尝试为我的创业公司制作一个演示应用程序。
我在尝试对猫鼬“查找”的结果进行排序时遇到了很多麻烦(几天和几天)。我已经广泛寻找答案,但找到了工作。这是一个不起作用的代码 sn-p:
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 行时崩溃。
令人发指的是,以下代码运行良好。唯一的问题是它在我定义排序指标之前执行排序,这对我来说没用。
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);
});
};
这里排序发生在从顶部开始的第二行。但是,就像我说的那样,这并没有使用适当的指标进行排序。
最后,我尝试了代码的各种变体以使其正常工作。第一个 sn-p(不起作用)只是我遇到的问题的一个例子!
【问题讨论】:
标签: node.js sorting asynchronous mongoose promise