1
resposta

Como salvar um objeto dentro de outro?

Pessoal, eu tenho o seguinte Schema.

const myTest = new mongoose.Schema({
    login: {type:String},
    position:{
        x:{type:Number},
        y:{type:Number},
        z:{type:Number},
      }
});

Quando eu envio os dados abaixo via postman, não apresenta erros e grava no banco de dados nosql.

{login:"asdf@asdf.com",    position:{x:1, y:2, z:3}}

Contudo, quando eu envio os mesmos dados via jquery de outro projeto, somente o login salva no banco de dados. Segue o código da aplicação:

  let mydata= {
    login: "asdf@asdf.com",
    position: {x:1, y:2, z:3 }
  };

  $.post('http://localhost:1234/mytest', mydata)
    .done(function(newdata){
      console.log(newdata); 
    });

O que devo fazer para salvar os dados a partir da minha aplicação?

1 resposta

Oi, Filipe, tudo bem? Nos desculpe a demora a responder.

Se você realizou a requisição pelo Postman e funcionou corretamente, então não há nada de errado com o seu código do servidor.

E se o problema está acontecendo apenas quando você usa JQuery, pode ser que o problema seja como ele trata os dados que você passa pelo método $.post. Você pode conferir a documentação do JQuery para entender melhor como ele recebe os dados.

Na Fetch API nativa do navegador, utilizamos o JSON.stringify() para passar objetos JSON nas requisições, além de informar que o tipo de dado é um JSON. O código fica assim:

const resposta = await fetch('http://localhost:1234/mytest', {
    method: 'POST',
    headers: 'Content-Type': 'application/json',
    body: JSON.stringify(mydata)
});

const dados = await resposta.json();

Assim como na Fetch API, verifique se o JQuery necessita de configurações específicas para informar que o dado que você quer transmitir é um objeto JSON também.

Espero ter ajudado! Abraços e bons estudos :)