Podio - PUT через JS-клиент приводит к пустому полю

Я использую модуль Podio JS NPM (podio-js) для обновления полей в моем приложении Podio. Однако у меня возникла проблема, когда вместо обновления до нового значения поле просто очищается ... поэтому оно в основном обновляется до null. Более того, несмотря на то, что какое-то обновление действительно происходит (хотя и неправильное), console.log() в обратном вызове никогда не запускаются - в мою консоль ничего не записывается.

Вот код, который я сейчас запускаю:

podio.isAuthenticated().then(() => {
    let url = `/item/${podio_item_id}/value/customer-id`
    let requestData = JSON.stringify({data: customer.id})

    podio.request('PUT', url, requestData, (responseData) => {
        console.log("made it")
        console.log(responseData)
    })
})

В документации, представленной на странице https://podio.github.io/podio-js/api-requests/, переменная примера requestData определяется так:

var requestData = { data: true };

Однако я обнаружил, что использование {data: customer.id} в моем коде абсолютно ничего не дало - мне пришлось JSON.stringify() это сделать, чтобы хоть немного приблизиться к работе.

В более ранней попытке сделать это я смог успешно обновить Podio через AJAX от моего клиента - атрибут данных должен был быть отформатирован следующим образом:

data: JSON.stringify({'value': 'true'})

Я пробовал все мыслимые итерации requestData вообразимого - структурировал его, привязывая к дополнительным одинарным кавычкам (как в моем рабочем примере), устанавливая его как {data: {value: customer.id}} и т. Д.

Абсолютно ничего не работает - в лучшем случае поле просто пустеет, в худшем - нет никакого эффекта ... и никаких сообщений об ошибках, которые помогли бы мне определить проблему.

Как правильно форматировать PUT запрос к Podio через их JS SDK?

ОБНОВЛЕНИЕ

По прихоти я подумал, что попробую использовать суперагент - следующий код работает отлично:

superagent                  
   .put(`https://api.podio.com/item/${podio_item_id}/value/customer-id`)
   .set('Authorization', `OAuth2 ${accessToken}`)
   .set('Content-Type', 'application/json')
   .send(JSON.stringify({'value': `${customer.id}`}))
   .end(function(err, res){
       if (err || !res.ok) {
           console.log(err)
       } else {
           console.log(res)
       }
})

Я использовал это точное форматирование данных и в моем исходном примере, та же проблема, что и раньше.

Что дает?


person skwidbreth    schedule 28.03.2017    source источник


Ответы (1)


Понял - мне пришлось отформатировать свои данные так:

let requestData = {'value': `${customer.id}`}

Обновить

Также стоит отметить, что функция обратного вызова для метода podio.request(), похоже, не работает с использованием обозначений, описанных в документации. Однако это обещание, поэтому вы можете рассматривать его как одно:

podio.request('PUT', `${url}/scustomer-id`, requestData)
.then((response) => {
    //do stuff...
})
person skwidbreth    schedule 28.03.2017