filterDocumentsByCriteria 🆕

Filter documents by SQL WHERE statement. Case Sensitive.

Throws `errorNoCriteriaProvided` if props are empty.

Signature

filterDocumentsByCriteria(session: MySQLSession, filter: FilterCriteria, pagination?: IOffsetPagination, sort?: Sort): Promise<IPaginatedSet<IDocument<S>>>

Example

// officeRouter.{ts|js}
import { Condition, Filter, OffsetPagination, SortBy } from 'crud-node';

import { officeController } from './officeController';
import { OfficeProps } from './schemas/office';

const transacted = true;

await db.usingSession(async (session) => {
  const filterOfficesInNYC = Filter.toCriteria(
    Filter.and(Condition.like('address.city', '%New York%'), Condition.gre(OfficeProps.places, 1)),
  );
  const sortOfficesByAvailablePlaces = SortBy().asc(OfficeProps.places).toCriteria();
  const pagination = OffsetPagination(1, 10);
  
  const data = await officeController.filterDocumentsByCriteria(
    session,
    filterOfficesInNYC,
    pagination,
    sortOfficesByAvailablePlaces,
  );
  return data;
}, transacted);

Last updated