prisma-korea / prisma-offset-pagination

Offset Pagination based on cursor system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Argument id: Got invalid value NaN on prisma.findMany. Provided Float, expected String.

sherifawad opened this issue · comments

I have an attendances tables and trying to query table with the library.

return await prismaOffsetPagination({
	cursor: cursor,
	size: Number(size),
	buttonNum: Number(buttonNum),
	orderBy,
	orderDirection,
	model: Attendance,
	prisma: prisma,
	where: {
		Profile: { id: studentId },
	},
}); 

The query:

  query Attendances($studentId: String!, $cursor: String, $orderBy: String, $orderDirection: String, $size: Int, $buttonNum: Int) {
      PaginatedAttendances(studentId: $studentId, cursor: $cursor, orderBy: $orderBy, orderDirection: $orderDirection, size: $size, buttonNum: $buttonNum) {
      pageEdges {
          cursor
          node {
              note
              id
              startAt
              endAt
          }
      }
      pageCursors {
          first {
              cursor
              page
              isCurrent
          }
          previous {
              cursor
              page
              isCurrent
          }
          around {
              cursor
              page
              isCurrent
          }
          next {
              cursor
              page
              isCurrent
          }
          last {
              cursor
              page
              isCurrent
          }
      }
          totalCount
      }
  }

the variables are :

"orderBy": "startAt",
"orderDirection": "asc",
"size": 1,
"buttonNum": 5,
"cursor":  null,

The result query:

{
  "data": {
    "PaginatedAttendances": {
      "pageEdges": [
        {
          "cursor": "c2FsdHlzYWx0YmZlOWVjYTItNjY2Ni00ZjI1LTg2NmEtZmQ0MmRhYTAzMTUx",
          "node": {
            "note": "seeded",
            "id": "bfe9eca2-6666-4f25-866a-fd42daa03151",
            "startAt": "2022-06-07T10:39:37.236Z",
            "endAt": "2022-06-07T12:39:37.236Z"
          }
        }
      ],
      "pageCursors": {
        "first": null,
        "previous": null,
        "around": [
          {
            "cursor": "c2FsdHlzYWx0YmZlOWVjYTItNjY2Ni00ZjI1LTg2NmEtZmQ0MmRhYTAzMTUx",
            "page": 1,
            "isCurrent": true
          },
          {
            "cursor": "c2FsdHlzYWx0YjczY2FlODctY2FmNS00ZWRjLWEyNGEtYmUzOTAzMGFkYmI4",
            "page": 2,
            "isCurrent": false
          },
          {
            "cursor": "c2FsdHlzYWx0NTM0MjUwY2YtOGEzNy00NTM5LWE1MjktYmE3Yjk2MDA2ODZj",
            "page": 3,
            "isCurrent": false
          },
          {
            "cursor": "c2FsdHlzYWx0MDBjOTFmNzgtYjlmZi00Yzg3LTg0NGEtYThmNGVmNDYzMDMy",
            "page": 4,
            "isCurrent": false
          }
        ],
        "next": {
          "cursor": "c2FsdHlzYWx0YjczY2FlODctY2FmNS00ZWRjLWEyNGEtYmUzOTAzMGFkYmI4",
          "page": 2,
          "isCurrent": false
        },
        "last": {
          "cursor": "c2FsdHlzYWx0MDZkODg3YWEtNWJlZS00OTg4LTg2N2QtYjEzNTU3OWRhYzhl",
          "page": 6,
          "isCurrent": false
        }
      },
      "totalCount": 6
    }
  }
}

If I use the page 3 cursor in variables:

"orderBy": "startAt",
"orderDirection": "asc",
"size": 1,
"buttonNum": 5,
"cursor":  "c2FsdHlzYWx0NTM0MjUwY2YtOGEzNy00NTM5LWE1MjktYmE3Yjk2MDA2ODZj",

I get an error:

{
  "errors": [
    {
      "message": "\nInvalid `prismaModel.findMany()` invocation in\n/home/eng/repos/academy_management/api/node_modules/prisma-offset-pagination/src/paginator/pageEdge.ts:84:46\n\n   81 // findManyArgsForCursorCount -> cursorCount -> currentPage\n   82 let findManyArgsForCursorCount: Record<string, any>;\n   83 if (findManyArgs?.orderBy) {\n→  84   const cursorObject = await prismaModel.findMany({\n          orderBy: {\n            startAt: 'asc'\n          },\n          where: {\n            Profile: {\n              id: '5a5c3da5-0b65-4b2a-8fcd-49465f35cbbf'\n            }\n          },\n          cursor: {\n            id: NaN\n                ~~~\n          },\n          take: 1\n        })\n\nArgument id: Got invalid value NaN on prisma.findManyAttendance. Provided Float, expected String.\n\n",
      "locations": [
        {
          "line": 2,
          "column": 9
        }
      ],
      "path": [
        "PaginatedAttendances"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "clientVersion": "3.15.2",
          "stacktrace": [
            "Error: ",
            "Invalid `prismaModel.findMany()` invocation in",
            "/home/eng/repos/academy_management/api/node_modules/prisma-offset-pagination/src/paginator/pageEdge.ts:84:46",
            "",
            "   81 // findManyArgsForCursorCount -> cursorCount -> currentPage",
            "   82 let findManyArgsForCursorCount: Record<string, any>;",
            "   83 if (findManyArgs?.orderBy) {",
            "→  84   const cursorObject = await prismaModel.findMany({",
            "          orderBy: {",
            "            startAt: 'asc'",
            "          },",
            "          where: {",
            "            Profile: {",
            "              id: '5a5c3da5-0b65-4b2a-8fcd-49465f35cbbf'",
            "            }",
            "          },",
            "          cursor: {",
            "            id: NaN",
            "                ~~~",
            "          },",
            "          take: 1",
            "        })",
            "",
            "Argument id: Got invalid value NaN on prisma.findManyAttendance. Provided Float, expected String.",
            "",
            "",
            "    at Document.validate (/home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:47823:20)",
            "    at PrismaClient._executeRequest (/home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:49972:17)",
            "    at consumer (/home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:49916:23)",
            "    at /home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:49920:76",
            "    at runInChildSpan (/home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:49133:12)",
            "    at /home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:49920:20",
            "    at AsyncResource.runInAsyncScope (node:async_hooks:202:9)",
            "    at PrismaClient._request (/home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:49919:86)",
            "    at /home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:46474:25",
            "    at _callback (/home/eng/repos/academy_management/api/node_modules/@prisma/client/runtime/index.js:46233:52)"
          ]
        }
      }
    }
  ],
  "data": {
    "PaginatedAttendances": null
  }
}

But some other cursor values work as expected!!

exactly the same problem ..
Also, every time I pass a cursor (i needed to pass the id, otherwise it couldn't work) it is also throwing error :

Argument id: Got invalid value NaN on prisma.findManyClient. Provided Float, expected String.

Will this be fixed in short notice?

Otherwise,I don't see the advantage of use this package.
Also the documentation should be improved