Почему это Обещание не выполнено и не может преобразовать неопределенную или нулевую в объектную ошибку? - PullRequest
0 голосов
/ 03 мая 2018

Я написал эту функцию, которая удаляет шаблоны. При регистрации в потоке управления все кажется нормальным, но что-то не так с функцией, вызывающей axios, и поэтому Promise не выполняется. Почему это так.

Прежде всего, это функция, которая вызывает axios:

function remove (id) {
  console.log("template#remove - id: " + id)
  return axios.delete(API.template(id))
}

Идентификатор печати 34 как ожидалось, а не "34"

Эта функция вызывается здесь:

deleteTemplate (templateId) {
  let vc = this
  let confirmation = prompt('Por favor escriba el nombre de la plantilla si desea borrarla')
  console.log("vc.template.name: " + vc.template.name)

  if (confirmation === vc.template.name) {
    console.log("Template.remove(templateId): " + templateId)
    Template.remove(templateId)
    .then( () => {
      console.log('template-detail#deleteTemplate success')
      alert('Plantilla eliminada')
      vc.$router.push({name: 'templates'})
    })
    .catch( (error) => {
      console.log('template-detail#deleteTemplate error', error)
      console.dir(error)
      if (error.response.data.errors != undefined) {
        alert("Hubo un error eliminando la plantilla"+"\n"+error.response.data.error+"\n"+error.response.data.errors)
      } else {
        alert("Hubo un error eliminando la plantilla"+"\n"+error.response.data.error)
      }   
    })
  }
  else {
    alert('El nombre no coincide')
  }
},

и идентификатор также печатается как число, а не как строка.

Я немного исследовал ошибку Cannot convert undefined or null to object и пришел к выводу, что должен оценивать строгое равенство по двум вещам, которые не являются строго равными. Но я не могу найти такую ​​эквивалентность.

EDIT:

Это API.template (id):

  template: function (id) {
    console.log('endpoints#template - this.templates + id:' + this.templates + id)
    return this.templates + id
  },
...