Да, документация неполная, но похоже, что они работают над этим.
Между тем, вы можете попробовать find()
на repository
с параметрами where
и or
вместе. Для разбивки на страницы параметры offset
и limit
работают нормально. Более подробная информация о фильтре доступна здесь в их документации. Подробная информация о CrudConnector.find()
методе доступна здесь.
Для справки я прикреплю свой фрагмент кода и буду использовать его по своему усмотрению.
/**
* customer.repository.ts
* mongodb datasource
* @param [searchKey] Search in `firstName`, `lastName`, or `email`
* @param [pageIndex] page number. If provided, `pageSize` is required
* @param [pageSize] records per page. If provided, `pageIndex` is required
* @returns {CustomerInfoInterface[]} List of customers sorted by `firstName`
*/
async getCustomerList(searchKey?: string, pageIndex?: number, pageSize?: number): Promise<CustomerInfoInterface[]> {
const searchParam = searchKey || '';
const searchParams = [
{firstName: {like: searchParam, options: 'i'}},
{lastName: {like: searchParam, options: 'i'}},
{email: {like: searchParam, options: 'i'}},
];
var filterObject = {where: {or: searchParams}, order: ['firstName ASC']};
if (pageIndex && pageSize) {
const offset = (pageIndex - 1) * pageSize;
const limit = pageSize;
filterObject = Object.assign(filterObject, {limit, offset});
}
logger.debug('search user list with search query');
logger.debug(filterObject);
const customerList = await this.find(filterObject);
return customerList.map(i => ({
customerId: i.customerId,
firstName: i.firstName,
lastName: i.lastName,
phone: i.phone,
address: i.address,
id: i.customerId,
}));
}
person
Salitha
schedule
11.09.2019