Я пытаюсь вставить коллекцию пользователей, но получаю вышеуказанную ошибку. Есть ли способ сделать запись поля в массиве. Он ожидает массив, но я ввожу admin
в поле моей роли. Как я могу вставить роли в виде массива из пользовательского интерфейса?
Это Server side
, я определяю все поля, которые нужно вставить.
Meteor.methods({
"users.insert"(users) {
check(users, [
{
email: String,
password: String,
username: String,
profile: {
name: { firstname: String, lastname: String },
phone: String
},
roles: [String]
}
]);
users.forEach(({ email, password, username, profile, roles }) => {
const userExists = Accounts.findUserByEmail(email);
if (!userExists) {
const userId = Accounts.createUser({
email,
password,
username,
profile
});
Roles.addUsersToRoles(userId, roles, "default-group");
}
});
}
});
Client side
, начальное состояние и метеорный вызов
this.state = {
phone: "",
email: "",
password: "",
username: "",
roles: []
};
onSubmit(e) {
e.preventDefault();
const {
phone,
email,
password,
username,
roles
} = this.state;
const user = [
{
email,
password,
username,
profile: {
name: { firstname, lastname },
phone,
},
roles
}
];
this.props.createUser("users.insert", user);
}
Submission Form
, я вставляю сюда значения
<form
onSubmit={this.onSubmit.bind(this)}
noValidate
className="boxed-view__form"
>
<input
className="editor__title editor__title--border"
type="tel"
name="phone"
placeholder="Contact"
value={this.state.phone}
onChange={this.onChange}
/>
<input
className="editor__title"
type="email"
name="email"
placeholder="Email"
value={this.state.email}
onChange={this.onChange}
/>
<input
className="editor__title"
type="password"
name="password"
placeholder="Password"
value={this.state.password}
onChange={this.onChange}
/>
<input
className="editor__title"
type="text"
name="username"
placeholder="username"
value={this.state.username}
onChange={this.onChange}
/>
<input
className="editor__title"
type="text"
name="roles"
placeholder="Roles"
value={!this.state.roles}
onChange={this.onChange}
/>
<button className="button">Create Account</button>
</form>