Olá,
Eu estou misturando o curso de MEAN com o Curso de Angular2 para estudar um pouco mais, com isso estou tendo alguns problemas.
Eu estou recebendo o seguinte erro ao tentar fazer o cadastro de um usuário:
at Function.create (C:\GitHub\eSports-team\Back\node_modules\mongoose\lib\model.js:1815:17)
at adiciona (C:\GitHub\eSports-team\Back\app\api\usuario.js:5:9)
message: 'Cast to ObjectID failed for value "" at path "_id"',
name: 'CastError',
stringValue: '""',
kind: 'ObjectID',
value: '',
path: '_id',
reason: [Object] } },
message: 'Usuario validation failed',
name: 'ValidationError' }
Bom, pelo que entendi ele esta com problema para converter algo para o _id. Estranho porque estou fazendo um post sem enviar _id, que seria criado pelo mongoose/mongo.
O meu formulario está assim:
<form novalidate #meuForm="ngForm" (submit)="cadastrar($event)">
<div class="form-group row">
<label for="login">Nome:</label>
<input required name="login" #login="ngModel" [(ngModel)]="usuario.login" minlength="3" maxlength="6" type="text" class="form-control" id="login" placeholder="Seu login...">
</div>
<div class="form-group row">
<label for="senha">Senha:</label>
<input required name="senha" #senha="ngModel" [(ngModel)]="usuario.senha" type="password" class="form-control" id="senha" placeholder="Sua senha...">
</div>
<div class="form-group row">
<label for="nome">Nome completo</label>
<input required name="nome" #nome="ngModel" [(ngModel)]="usuario.nome" type="text" class="form-control" id="nome" placeholder="Seu nome...">
</div>
<div class="row">
<div class="col">
<button [disabled]="meuForm.form.invalid" type="submit" class="btn btn-primary btn-lg btn-block">Cadastrar </button>
</div>
</div>
</form>
Estou fazendo ele baseado em validação por template, ainda não me acostumei com a validação por modelo.
Ele chama o seguinte função no componente:
export class CadastroUsuarioComponent implements OnInit {
usuario: UsuarioComponent = new UsuarioComponent();
constructor( private service: UsuarioService, private router: ActivatedRoute) {
this.service = service;
this.router = router;
}
ngOnInit() {
}
cadastrar(){
this.service.cadastrar(this.usuario)
.then(res => {
this.usuario = new UsuarioComponent();
})
.catch(erro => console.log(erro));
}
}
Esse aqui é o serviço:
cadastrar(usuario: UsuarioComponent): Promise<any> {
if(usuario._id){
return this.http.put(this.url + '/' + usuario._id, JSON.stringify(usuario),
{ headers: this.headers })
.toPromise()
.then(res => res.json())
.catch();
} else {
return this.http.post(this.url, JSON.stringify(usuario),
{ headers: this.headers })
.toPromise()
.then(res => res.json())
.catch();
}
}
Detalhe, eue stou utilizando .toPromisse(Acho que o problema pode está aqui.
Posso colocar tambem o Modelo(Mongoose) e a código da rota do Express.