Чтобы получить записи путем сопоставления полей без идентификатора, вы можете использовать API фильтра записей /<module>/filter
(см. документацию или /rest/v10/help
вашего Sugar), чтобы указать, какие поля для поиска какихзначения.
Если вам нужна только одна совпадающая запись, укажите "max_num": 1
в параметрах.
В качестве ответа вы получите объект json с массивом records
, содержащим совпадающиезаписей.
Фильтрация по адресу электронной почты
Адреса электронной почты ранее сохранялись в полях email1, email2 и т. д. Эти устаревшие поля все еще существуют в Sugar> =7 (на данный момент) и может использоваться с полезной нагрузкой запроса следующим образом:
{
max_num: 1,
filter: [
{"email2": "test@secondary.test"},
],
fields: ["id"],
}
При этом будет выполняться поиск адреса электронной почты только по дополнительному адресу электронной почты.
Однако в современномСахар, адреса электронной почты хранятся в поле ссылки на основе отношений, называемом email_addresses
, которое соединяется с записями EmailAddress, которые можно искать следующим образом:
{
max_num: 1,
filter: [
{"email_addresses.email_address": {"$equals": "test@something.test"}},
],
fields: ["id"],
}
Это вернет запись с any электронная почтаплатье соответствия.Независимо от того, является ли он основным или другим.
Случайно связанные примечания
- Конечная точка фильтра, очевидно, поддерживает как
GET
, так и POST
метод, так что вы можете выбрать, передавать ли определение и параметры фильтра через строку запроса или в теле запроса. GET
запросы к конечной точке /<module>
будут использовать тот же базовый API фильтра.Однако вы не можете фильтровать, используя POST
на /<module>
, потому что эта комбинация зарезервирована для создания новых записей. - Если вы не знаете, как должны выглядеть критерии поиска в синтаксисе фильтра Sugar, вы можетеиспользовать Sugar для создания примера фильтра в представлении списка модулей и проверить на вкладке сети отладчика браузера, как выглядела полезная нагрузка результирующего запроса Sugar.
- Если вам нужен поиск с подстановочными знаками, вы можете сделать это с помощью подстановочного знакасимвол
%
, например, для %@whatever.test
, кажется, требует использования оператора, отличного от $equals
, например, $starts
или $contains
. - Если вас интересует только количество совпадений, нефактические записи, отправьте фильтр на конечную точку
/<module>/count
(GET
) или на /<module>/filter/count
(GET
или POST
). - Во время тестирования разработки я рекомендую использовать
max_num
вышечем то, что вы ожидаете получить, чтобы убедиться, что вы видите его немедленно, если вы получили какие-либо ложные срабатывания в ваших результатах из-за неправильного определения фильтраион.Это или обратите пристальное внимание на next_offset
в ответе json: он будет иметь значение -1
, если результатов не будет больше, чем результатов, уже возвращенных в ответе. - Есть короткая запись для *Оператор 1066 *, например,
{"email_addresses.email_address": {"$equals": "test@something.test"}},
также может быть записан как {"email_addresses.email_address": "test@something.test"}
,.