Как сгенерировать форму для выбора пользователя с помощью Autoform и Collection2 в Meteor?
Я хочу иметь возможность выбрать несколько пользователей из списка пользователей.
Я пользователь collection2
, simple-schema
а также autoform
,
Я хотел бы создать простой QuickForm для этого. Вот моя простая схема:
Schemas.Item = new SimpleSchema({
name: {
type: String,
label: "Name",
max: 100
},
userIds: {
type: [String],
regEx: SimpleSchema.RegEx.Id
}
});
Глядя на документы автоформ, я заметил, что хочу иметь представление select, поэтому мне нужно передать параметры.
Я хотел бы иметь возможность сделать это прямо в моей схеме!
userIds: {
type: [String],
regEx: SimpleSchema.RegEx.Id
options: function() {
// return users with {value:_id, label:username}
}
}
В противном случае мне пришлось бы сгенерировать шаблон с помощью quickFormFields, чтобы передать параметры.
Просто для накапливания вещей не должно быть дубликатов пользовательских идентификаторов...
Спасибо за любую помощь
1 ответ
Возможно, вы уже нашли ответ, но, возможно, кто-то найдет его полезным. У меня есть много разных вещей, чтобы указать, когда вы выбираете пользователя, поэтому мой тип для пользователей [Объект]. В вашем случае вы можете изменить это. Самая важная часть - это метод autoform.options, и, кажется, это та часть, которую вы искали.
users: {
type: [Object]
},
"users.$.id": {
// you can use your own type, e.g. SimpleSchema.RegEx.Id, as I am using custom Schema for accounts
type: Schemas.Account._id,
label: 'Select user',
autoform: {
options: function () {
var options = [];
Meteor.users.find().forEach(function (element) {
options.push({
label: element.username, value: element._id
})
});
return options;
}
}
}
Приведенный выше фрагмент предоставит вам список всех пользователей, чтобы вы могли легко выбрать их из выпадающего списка.
Не забудьте добавить соответствующий метод публикации, чтобы это работало, так как без этого вы всегда будете получать только тот, который в данный момент зарегистрирован.