#javascript #node.js #keystonejs
#javascript #node.js #keystonejs ( ключевые слова )
Вопрос:
Я пытаюсь применить логику доступа на уровне поля в KeystoneJS в соответствии с этими инструкциями.
Следующее скрывает поле fieldName
из пользовательского интерфейса администратора:
fieldName: {
type: Text,
access: {
read: false,
update: false,
create: false
},
},
Но поле не будет скрыто от пользовательского интерфейса администратора, если я использую императивный подход. Смотрите ниже, который, как я ожидал бы, даст тот же результат, что и описанный выше статический подход:
fieldName: {
type: Text,
access: {
read: ({ authentication: { item, listKey } }) => {
return false;
},
update: ({ authentication: { item, listKey } }) => {
return false;
},
create: ({ authentication: { item, listKey } }) => {
return false;
}
},
},
Я что-то пропустил или это ошибка?
Ответ №1:
Императивный подход использует функцию, которая не может быть передана на сторону клиента.
Keystone использует true
false
для этого значение maybe. это означает !!(() => {})
, что становится истинным при создании метаданных пользовательского интерфейса администратора для полей в списке.
в разделе «Детализированное императивное логическое значение» есть примечание, в котором объясняется, что эти поля действительно включаются в graphql и пользовательский интерфейс, но исключаются во время выполнения.
Комментарии:
1. Спасибо за разъяснение @Gautam — я рассмотрю другие подходы. С нетерпением ждем новых обновлений пользовательского интерфейса администратора! keystonejs.com/blog/roadmap-update