Pereiti prie turinio

React.js + Rest API error'as


Rekomenduojami pranešimai

Sveiki,

 

Gaminu paprastutį webą praktikai su React.js, Express.js, Sqlite3 duomenų baze ir naudoju Axios REST užklausoms. Pavasarį viską dariau taip pat, viskas veikė, tačiau dabar jau gaunų errorą, kai duomenys siunčiami į duomenų bazę.

Error:

TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be one of type string or Buffer. Received type object

 

Front end užklausa:

handleSubmit = () => {

   let review = {
   name: this.state.name,
   review: this.state.review
   };

   axios.post(`http://localhost:8080/api/newreview`, { review })
     .then(res => { 
       console.log("done");
     })
 }

 

Back end siuntimas į duomenų bazę:

app.post('/api/newreview', (req, res) => {
 let item=req.body.review;
 const array = [1, item.name, item.review];
 let sql = `INSERT INTO Reviews(ID, Name, Review) VALUES(?, ?, ?)`;

 db.run(sql, array, function(err){
   if (err){
     return res.end(err),
     console.error(err.message);
   } else {
     res.end(JSON.stringify(item));
   }
 })
})

 

Duomenys iš front end ateina tvarkingi, tokie, kokie ir įvesti. Suprantu, kad lyg ir netinka atsiunčiamas objektas ir nori kitokio tipo, tačiau arba nemoku googlinti, arba nerandu tinkamos info kaip tai ištaisyti. :D Gal kas pagelbėt galėtų? :)

Redagavo Blofeld
Nuoroda į pranešimą
Dalintis kituose puslapiuose

 

Back end siuntimas į duomenų bazę:

app.post('/api/newreview', (req, res) => {
 let item=req.body.review;
 const array = [1, item.name, item.review];
 let sql = `INSERT INTO Reviews(ID, Name, Review) VALUES(?, ?, ?)`;

 db.run(sql, array, function(err){
   if (err){
     return res.end(err),
     console.error(err.message);
   } else {
     res.end(JSON.stringify(item));
   }
 })
})

 

Duomenys iš front end ateina tvarkingi, tokie, kokie ir įvesti. Suprantu, kad lyg ir netinka atsiunčiamas objektas ir nori kitokio tipo, tačiau arba nemoku googlinti, arba nerandu tinkamos info kaip tai ištaisyti. :D Gal kas pagelbėt galėtų? :)

 

 

res.end(JSON.stringify(item));

 

Bandyk res.send vietoje res.end

Redagavo Cpliusas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

return res.end(err)

 

cia jauciu tavo beda, o siaip breakpoint'us susidek ir per kelias sekundes atrasi kurioj vietoj stringa, keista kad to iki siol dar to nenaudojai.

 

https://expressjs.com/en/4x/api.html#res.end

 

Ačiū! Atkreipiau dėmesį į duomenų bazę - tai visus įrašus patalpindavo, bet iškart back endas gaudavo errorą.

Man errorą išmesdavo iš karto po db.run.

Dėl breakpointų - su Visual Studio juos visada naudojau ir buvo gerai, su Visual Studio Code breakpointus užsimetu, bet kažkodėl per juos neina :D Bet problema išspręsta, ačiū! :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...