mongoose 返回空数组的模型.find().sort()

eanckbw9  于 2023-03-12  发布在  Go
关注(0)|答案(1)|浏览(131)
let query = Tour.find(JSON.parse(queryStr));

if (req.query.sort) {
  query = query.sort(req.query.sort);//a string 'ratings'
}

const tours = await query;

res.status(200).json({
  status: 'success',
  requestedAt: req.requestTime,
  result: tours.length,
  data: {
    tours,
  },
});

这是我的代码图尔斯应该返回所有的数据,但是它只给了我一个空数组,我对这些都是新手,我找不到解决方案,但是我确信,我使用的排序方法中发生了一些事情,因为我使用了调试器,我不明白里面发生了什么。
我使用的是mongoose v5,节点是v18,我不知道这是否是问题所在,如果有人能帮我解决这个问题,那就太好了

l3zydbqr

l3zydbqr1#

太长,不能作为注解。调试时,请尝试先对功能进行硬编码,然后添加动态值。
我刚刚试着重新创建了您所拥有的内容,它运行良好,所以问题可能出在queryStrreq.query.sort的值上。

// Model
const Tour = mongoose.model('tours', new mongoose.Schema({
    ratings: Number,
    description: String,
}))

// Initial data
// const tour1 = await Tour.create({ ratings: 8, desc: "Bad" })
// const tour2 = await Tour.create({ ratings: 3, desc: "Bad" })
// const tour3 = await Tour.create({ ratings: 1, desc: "Cool" })
// const tour4 = await Tour.create({ ratings: 4, desc: "Bad" })
// const tour5 = await Tour.create({ ratings: 4, desc: "Cool" })
// const tour6 = await Tour.create({ ratings: 999, desc: "Cool" })

// Test
const query = Tour.find({desc: "Cool"})
query.sort("ratings")

const tours = await query
console.log({ tours })

这产生了预期的输出,只有“酷”的图尔斯排序的评级。看到我如何使用硬编码的值排序和查找?这使我相信,问题是在值。

相关问题