diff --git a/packages/drizzle/src/find/findMany.ts b/packages/drizzle/src/find/findMany.ts index 76102df30e..e991b55197 100644 --- a/packages/drizzle/src/find/findMany.ts +++ b/packages/drizzle/src/find/findMany.ts @@ -80,7 +80,7 @@ export const findMany = async function find({ if (orderBy) { for (const key in selectFields) { const column = selectFields[key] - if (column.primary) { + if (!column || column.primary) { continue } diff --git a/test/database/int.spec.ts b/test/database/int.spec.ts index e2b04bde95..0a6adc771c 100644 --- a/test/database/int.spec.ts +++ b/test/database/int.spec.ts @@ -32,7 +32,7 @@ import { initPayloadInt } from '../helpers/initPayloadInt.js' import { isMongoose } from '../helpers/isMongoose.js' import removeFiles from '../helpers/removeFiles.js' import { seed } from './seed.js' -import { errorOnUnnamedFieldsSlug, postsSlug } from './shared.js' +import { errorOnUnnamedFieldsSlug, fieldsPersistanceSlug, postsSlug } from './shared.js' const filename = fileURLToPath(import.meta.url) const dirname = path.dirname(filename) @@ -2325,6 +2325,19 @@ describe('database', () => { expect(localAsc[1].id).toBe(doc_2.id) expect(localAsc[0].id).toBe(doc_1.id) }) + + it('should allow to sort by a virtual field without error', async () => { + await payload.delete({ collection: fieldsPersistanceSlug, where: {} }) + await payload.create({ + collection: fieldsPersistanceSlug, + data: {}, + }) + const { docs } = await payload.find({ + collection: fieldsPersistanceSlug, + sort: '-textHooked', + }) + expect(docs).toHaveLength(1) + }) }) it('should convert numbers to text', async () => {