Уникальные типы полей и конкретные GET-параметры для вызовов API в Apostrophe CMS - PullRequest
0 голосов
/ 05 мая 2018

У меня есть несколько вопросов о Apostrophe CMS:

  1. Можно ли добавить уникальный тип поля в апострофах? Я не могу найти способ сделать это.

Редактировать: я заметил, что я недостаточно конкретен. Я хочу убедиться, что в базе данных не может быть двух экземпляров с одинаковым значением в добавленном поле. Это должно быть что-то вроде дополнительного идентификатора. Есть ли вариант для этого? Может быть что-то вроде:

addFields: [
    {
        name: 'secondId',
        label: 'Second ID',
        type: 'string',
        required: true,
        unique: true
    }
]
  1. Я хочу получить доступ к API-интерфейсу без апострофов и получить определенный элемент, передав определенное значение одного из созданных типов полей соответствующей части в GET-параметре. Возможно ли что-то подобное?

Например:

Кусочек:

module.exports = {
    extend: 'apostrophe-pieces',
    name: 'article',
    label: 'Article',
    pluralLabel: 'Articles',
    restApi: {
        safeFor: 'manage'
    },
    addFields: [
        {
            name: 'title',
            label: 'Name',
            type: 'string',
            required: true
        },
        {
            name: 'author',
            label: 'Author',
            type: 'string',
            required: true
        }
    ]
};

Желаемый вызов API для получения всех статей, которые отмечены как «Джон» как автор:

http://example.com/api/v1/article?author=Jon

Заранее большое спасибо!

1 Ответ

0 голосов
/ 06 мая 2018

Типы пользовательских полей

Вы можете добавить пользовательские типы полей на уровне проекта, расширив apostrophe-schemas и добавив правильное определение. Вам нужно будет добавить конвертер для санации на стороне сервера и заполнитель для внешнего интерфейса поля формы.

Вы можете следовать примерам в модуле схемы Apostrophe, связаны функции, определяющие число с плавающей запятой

https://github.com/apostrophecms/apostrophe/blob/0bcd5faf84bc7b05c51de7331b17f5929794f524/lib/modules/apostrophe-schemas/index.js#L1367 https://github.com/apostrophecms/apostrophe/blob/0bcd5faf84bc7b05c51de7331b17f5929794f524/lib/modules/apostrophe-schemas/public/js/user.js#L991

Вы бы добавили свои определения на уровне проекта lib/modules/apostrophe-schemas index.js и public/js/user.js соответственно.

Фильтрация

Вы можете искать в вашем индексе частей строку типа Jon, добавив ?search=jon к вашему запросу, но более вероятно, что вы хотите отфильтровать части по значению объединения.

Если бы у вас были типы элементов article и authors, в схеме article могло бы быть поле joinByOne, которое позволяет связать эту статью с частью author. Затем, включив pieceFilters, вы можете фильтровать напрямую по этим объединенным свойствам.

Полный перечень piecesFilters можно найти здесь https://apostrophecms.org/docs/tutorials/intermediate/cursors.html#filtering-joins-browsing-profiles-by-market

Я думаю, вам также нужно пометить этот фильтр как безопасный для использования API в вашей apostrophe-headless конфигурации https://github.com/apostrophecms/apostrophe-headless#filtering-products

...