vuejs 2 axios поставить, удалить

У меня есть несколько безответных выпусков, у меня есть образец грубого Vuejs с Axios, как показано ниже:

updateItem: function () {
  var obj = {'name': this.name, 'dob': this.dob, 'gender': this.gender}
  // console.log(obj)
  var strngObj = qs.stringify(obj)
  this.axios.put('http://localhost:3000/crud/update/', this.update_id,
  strngObj, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  }
  // emulateJSON: true // fix cannot post as form data and urlencoded
  ).then((resp) => {
    if (resp.data.log === 'update success !') {
      this.items.push(resp.data.data)
      alert(resp.data.log)
    }
    console.log(resp.data) // check full object in browser console log
  })
},

этот код ниже - на стороне сервера

app.put('/crud/update/:UPid', (rqs, rsp, next) => {
   rqs.header("Access-Control-Allow-Origin", "*");
   rqs.header("Access-Control-Allow-Methods", "POST,PUT");

   var obj = { "_id" : mongodb.ObjectID(rqs.params.UPid) };
   var update = { $set : { name: rqs.body.name, dob: rqs.body.dob, gender: 
   rqs.body.gender} };  // $set is object 

   var cursor = db.collection('info').updateMany(obj,update, function(err, res)
   {
     if (err) throw err;
     rsp.send({log: "update success !",data: obj});
     console.log(rqs.body);
     // console.log(update);
     //db.close();
 });
})

У меня есть тест и отладка на Chrome. для создания и чтения работают нормально, но обновление (метод PUT), удаление (DELETE) вообще не работают, и всегда отображается ошибка:

204 Нет содержимого

спасибо за идею!


person chea sotheara    schedule 01.10.2017    source источник
comment
Я думаю, у вас проблема с вашей базой данных. Можете ли вы добавить больше кода в свою базу данных   -  person Quoc-Anh Nguyen    schedule 01.10.2017


Ответы (1)


вы кодируете для правильной работы обновления, статус 204 означает, что вам нужно вернуть ответ от бэкэнда (код nodejs) на ваш интерфейс (vuejs)

вам нужно вернуть объект json из nodejs api в vuejs, что означает

Код nodejs будет таким:

    app.put('/crud/update/:UPid', (rqs, rsp, next) => { 
`rqs.header("Access-Control-Allow-Origin", "*");
rqs.header("Access-Control-Allow-Methods", "POST,PUT");`

   `var obj = { "_id" : mongodb.ObjectID(rqs.params.UPid) };
   var update = { $set : { name: rqs.body.name, dob: rqs.body.dob, gender: `
  ` rqs.body.gender} };  // $set is object 
   var cursor = db.collection('info').updateMany(obj,update, function(err, res)
   {
     if (err) throw err;
     //delete this line
    // rsp.send({log: "update success !",data: obj});
     console.log(rqs.body);
     //add this line to return json object
rsp.json({ status: "success"});
 });
})`

и ваш метод обновления vuejs будет:

` updateItem: function () {
  var obj = {'name': this.name, 'dob': this.dob, 'gender': this.gender}
  // console.log(obj)
  var strngObj = qs.stringify(obj)
  this.axios.put('http://localhost:3000/crud/update/', this.update_id,
  strngObj, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  }
  // emulateJSON: true // fix cannot post as form data and urlencoded
  ).then((resp) => {
        // parse json object response 
    var status = JSON.parse( resp.data.status);
  }).catch(e => {
                this.errors.push(e);
   })
},`
person Thamer    schedule 01.10.2017