Skip to content

Service adapter operators property marked as deprecated while still needed to use MongoDB specific operators starting with $ #3431

@Psycholisk

Description

@Psycholisk

Steps to reproduce

  • Use the @feathersjs/mongodb adapter as a datasesource adapter for your project
  • Add the operator to the queryable fields in the TypeBox querySchema as follows
export const tagQuerySchema = Type.Intersect(
    [
        querySyntax(tagQueryProperties, {
            title: {
                $regex: Type.Any()
            }
        }),
        // Add additional query properties here
        Type.Object({}, { additionalProperties: false })
    ],
    { additionalProperties: false }
)
  • Query the collection with the following query
app.service('tags').find({
  query: {
    title: {
      $regex: /(?:)/i
    }
  }
})

Expected behavior

As per the latest docs, specifying the operator in the querySchema is sufficient to allow custom operators call, without the need to add the option operators: ['$regex'] to the service adapter options.

The query should return the documents that have a title that match this regex expression.

Actual behavior

Instead we get this error error: BadRequest: Invalid query parameter $regex.

Only when I add the operators option (which is marked as deprecated) it works fine.

System configuration

  • Apple M2

Module versions (especially the part that's not working):

  • Feathersjs ^5.0.11
  • Mongodb ^6.1.0

NodeJS version:

  • Node 18.16.0

Operating System:

  • MacOS 14.1.2 (23B92)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions