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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions