Sealious na tym etapie to ewidentnie moja ulubiona kategoria. Tym razem piszę z potencjalnym błędem w typownaiu. Probelm jest taki, kolekcja wygląda tak
import { App, Collections, FieldTypes, Policies } from "sealious";
class Users extends Collections.users {
fields = {
...App.BaseCollections.users.fields,
photo: new FieldTypes.File(),
name: FieldTypes.Required(new FieldTypes.Text()),
surname: FieldTypes.Required(new FieldTypes.Text()),
email: FieldTypes.Required(new FieldTypes.Email()),
roles: new FieldTypes.ReverseSingleReference({
referencing_collection: "user-roles",
referencing_field: "user",
}),
};
policies = {
list: new Policies.Public(),
};
defaultPolicy = new Policies.Public();
}
export default new Users();
Jak widać są tu opcjonalne pola takie jak photo
. I teraz jeśli chce stworzyć użytkownika w ten sposób
const user = await ctx.$app.collections.users.suCreate({
password: "paste-random-password-here",
// photo:create imgae and insert photo here
// username: ctx.$body.username || (ctx.$body.name as string).toLowerCase(),
name: ctx.$body.name as string,
surname: ctx.$body.surname as string,
email: ctx.$body.email as string,
photo: undefined,
roles: [],
});
To dostane błąd, że Type 'undefined' is not assignable to type 'File'.
na polu photo
. By ten błąd znikł wystarczy użuć create
zamiast suCreate
const user = await ctx.$app.collections.users.create(ctx.$context, {
password: "paste-random-password-here",
// photo:create imgae and insert photo here
// username: ctx.$body.username || (ctx.$body.name as string).toLowerCase(),
name: ctx.$body.name as string,
surname: ctx.$body.surname as string,
email: ctx.$body.email as string,
photo: undefined,
roles: [],
});
Również, jeśli nie podam tego pola w suCreate
to pokazuje, że go brakuje. Wydaje mi się, że te pole powinno być opcjonalne w obu przypadkach jako, że kolekcja nie mówi, że jest potrzebne?
Czy może ktoś potwierdzić ten sam problem u siebie? Jeśli tak to pewnie powinniśmy stworzyć na to taska