Prisma多个可选排序属性,orderBy



我正在Prisma后端的GET端点上工作,以检索所有任务。

目前,我想使用sortBy添加多个排序选项

在我下面的代码中,有两个sortBy选项。然而,我似乎无法使它们都工作,只是orderBy[]数组中的第一个对象。

router.get("/tasks", async (req, res) => {
var currentPage = req.query.page || 1;
const listPerPage = 45;
const offset = (currentPage - 1) * listPerPage;
var category = req.query.category;
var sortQuery = req.query.sort;
var sort = sortQuery.split("_");
var idSortBy = "asc";
var dateSortBy = "asc";
if (sort !== undefined) {
if (sort[0] === "id") {
idSortBy = sort[1];
} else {
dateSortBy = sort[1];
}
}
const allTasks = await prisma.task.findMany({
orderBy: [
{
createdAt: dateSortBy,
},
{
id: idSortBy,
},
],
where: { category: category },
skip: offset,
take: listPerPage,
});
res.json({
data: allTasks,
meta: { page: currentPage },
});
});

我找到了一个解决方案,其中所有排序选项都被解析为findMany函数中的orderBy。

router.get("/tasks", async (req, res) => {
var currentPage = req.query.page || 1;
const listPerPage = 45;
var offset = (currentPage - 1) * listPerPage;
var category = req.query.category;
var sort = req.query.sort.split("_");
var orderByObject = {};
orderByObject[sort[0]] = sort[1];
var orderBySet = [orderByObject];
const allTasks = await prisma.task.findMany({
where: { category: category },
skip: offset,
take: listPerPage,
orderBy: orderBySet,
});
res.json({
data: allTasks,
meta: { page: currentPage },
});
});

最新更新