#javascript #node.js #vue.js #post #fetch
#javascript #node.js #vue.js #Публикация #выборка
Вопрос:
У меня есть приложение с Vue.js и в методе я создал простую выборку для публикации в моем API, но в моем mongodb сохраняется только _id
.
Мой метод в приложении Vuejs (я создал переменную с json для проверки моей выборки post):
saveAllResults(){
let myvalue ='{"Step2":[{"selected":!1,"produto":"A70-5","ncm":"9506.62.00","aliqII":.2,"aliqIpi":0,"aliqPis":.021,"aliqCofins":.0965,"descricao":"BOLA DE BASQUETE","pesoUnitario":.43,"unitario":.78,"dumping":0,"cubagemUnitario":0,"quantidade":150,"icmEstadoDestino":0,"mvaAjustado":0,"markup":.12},{"selected":!1,"produto":"PINK-7-103","ncm":"7117.90.00","aliqII":.18,"aliqIpi":.12,"aliqPis":.021,"aliqCofins":.0965,"descricao":"BIJOUTERIAS EM METAL/ VIDRO ","pesoUnitario":.975,"unitario":1.52,"dumping":0,"cubagemUnitario":0,"quantidade":200,"icmEstadoDestino":0,"mvaAjustado":0,"markup":.11},{"selected":!1,"produto":"PINK-7-103","ncm":"7117.90.00","aliqII":.18,"aliqIpi":.12,"aliqPis":.021,"aliqCofins":.0965,"descricao":"BIJOUTERIAS EM METAL/ VIDRO ","pesoUnitario":.975,"unitario":1.52,"dumping":0,"cubagemUnitario":0,"quantidade":300,"icmEstadoDestino":0,"mvaAjustado":0,"markup":.19}],}';
fetch('http://localhost:4242/api/v1/dis', {
method: 'post',
body: myvalue
}).then(function(response){
return response.json(myvalue);
}).then(function(text){
console.log(text);
}).catch(function (error){
console.error(error);
})
}
мой маршрут в моем API (я использую express, morgan, joi, helmet, cors, bodyParse с MongoDB)
// CREATE ONE
router.post('/', async (req, res, next) => {
try {
const value = await schema.validateAsync(req.body);
const inserted = await dis.insert(value);
res.json(inserted);
} catch (error) {
next(error);
}
});
Когда я пытаюсь опубликовать те же данные в формате json с помощью Isominia (или postman), post работает нормально, но с моим последним запросом post генерируется только _id
и не публикуются все данные, которые я хочу.
Результат выборки Post возвращается в консоль:
{_id: "5f376d6edd37760c6632c8ab"}
Ответ №1:
После того, как совершенно забыл, что вам нужно указать headers
в вашем fetch POST request
для передачи json в ваш API и использовать метод JSON.stringuify для переменной, таким образом, код, передающий заголовки в моей выборке, является:
saveAllResults(){
let myvalue =JSON.stringify({"Step2":[{"selected":!1,"produto":"A70-5","ncm":"9506.62.00","aliqII":.2,"aliqIpi":0,"aliqPis":.021,"aliqCofins":.0965,"descricao":"BOLA DE BASQUETE","pesoUnitario":.43,"unitario":.78,"dumping":0,"cubagemUnitario":0,"quantidade":150,"icmEstadoDestino":0,"mvaAjustado":0,"markup":.12},{"selected":!1,"produto":"PINK-7-103","ncm":"7117.90.00","aliqII":.18,"aliqIpi":.12,"aliqPis":.021,"aliqCofins":.0965,"descricao":"BIJOUTERIAS EM METAL/ VIDRO ","pesoUnitario":.975,"unitario":1.52,"dumping":0,"cubagemUnitario":0,"quantidade":200,"icmEstadoDestino":0,"mvaAjustado":0,"markup":.11},{"selected":!1,"produto":"PINK-7-103","ncm":"7117.90.00","aliqII":.18,"aliqIpi":.12,"aliqPis":.021,"aliqCofins":.0965,"descricao":"BIJOUTERIAS EM METAL/ VIDRO ","pesoUnitario":.975,"unitario":1.52,"dumping":0,"cubagemUnitario":0,"quantidade":300,"icmEstadoDestino":0,"mvaAjustado":0,"markup":.19}],});
fetch('http://localhost:4242/api/v1/dis', {
method: 'post',
headers: {
'Content-Type' : 'application/json'
},
body: myvalue
}).then(function(response){
return response.json(myvalue);
}).then(function(text){
console.log(text);
}).catch(function (error){
console.error(error);
})
}