2016-12-22 4 views
1

Я создаю схему, с которой я хотел бы иметь отношения с пользователями-апострофами, но, похоже, не может заставить ее работать?Apostrophe Pieces присоединяется к пользователям

{ 
     name: '_coaches', 
     label: 'Coaches', 
     type: 'joinByArray', 
     withType: 'apostrophe-users' // also tried just 'user(s)', 
     idsField: 'coachIds' 
} 

Кто-нибудь знает, возможно ли выше, и если да, то что я делаю неправильно?

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

ответ

2

Я ведущий разработчик Apostrophe на P'unk Avenue.

Это работает в некотором смысле, однако пользователи по умолчанию не публикуются, так как это поле удалено из схемы, поэтому публика никогда не сможет их найти.

Это связано с тем, что в нашем опыте смешивание концепции человека в лицевой директории людей и пользователя, который может войти в систему, обычно приводили к разочарованию и путанице в Apostrophe 0.5. «Это пользователь, но они не могут войти в систему? Это учетная запись, но они не входят в каталог? Я не понимаю» и т. Д.

Поэтому мы рекомендуем сделать отдельный «профиль», чтобы представить человека на лицевой стороне и разрешить пользователям и группам использовать для входа и разрешений и ничего другого.

Можно добавить опубликованное поле обратно пользователям и группам, если вы действительно хотите через addFields, но мы не рекомендуем его.

Мда, но все, что было сказано, фактическая ошибка в вашем присоединиться в том, что вы должны были использовать apostrophe-user (см name свойство в модуле апостроф-пользователей, это то, что один пользователь называется, в свойстве типа в коллекции документов, которая отличается от имени модуля). Экземпляры сингулярны, модули множественные. В зависимости от вашего предполагаемого приложения это может быть то, что вам нужно знать.

Что касается присоединения только к тем, кто является членами определенной группы, мне интересно, почему вы не присоединяетесь к этой группе и не смотрите на ее соединение _users. Вам нужно будет установить фильтр join для явного получения этого дополнительного соединения, поскольку Apostrophe не рекурсивно объединяется по умолчанию для предотвращения бесконечных циклов.

+0

Благодарим вас за подробный ответ. Я полностью согласен с вашей логикой в ​​том, что вся модель пользовательских/разрешений скрыта, однако на этот раз вокруг действительно имеет смысл быть частью одной и той же модели, поэтому я попробую сделать это. Еще раз спасибо :) –