#javascript #api #rest #axios #netsuite
#javascript #API #rest #axios #netsuite
Вопрос:
Я пытаюсь создать запрос к NetSuite REST API, и в моем конкретном случае использования наиболее доступным источником информации является номер клиента.
У меня есть axios
вспомогательная настройка для выполнения запросов. Было интересно, может ли кто-нибудь мне помочь… Это то, что у меня есть до сих пор.
await ns.get('customer?q=phone')
.then((res) => {
console.log(res)
console.log('success')
})
.catch((err) => {
console.log(err);
console.log('error')
})
Теперь, к сожалению, это не работает. Есть идеи?
Спасибо за ваше время!
РЕДАКТИРОВАТЬ: нашел свое решение!
await ns.get('customer?q=phone IS <Customer Number Here>')
.then((res) => {
console.log('success')
let custID = res.data.items[0].id
console.log(custID);
await ns.get(`customer/${custID}`)
.then((res) => {
console.log(res);
})
})
.catch((err) => {
console.log(err);
console.log('error')
})
Этот код вернул очень большой объект. Открытие response.data.items дало мне идентификатор клиента. Затем выполнение нового запроса с этим идентификатором дало мне необходимую информацию.
Ответ №1:
Первое решение: удалить await
ключевое слово.
ns.get('customer?q=phone')
.then((res) => {
console.log(res)
console.log('success')
})
.catch((err) => {
console.log(err);
console.log('error')
})
В противном случае вы должны определить async
, чтобы иметь возможность использовать await
следующим образом
var getData = () => new Promise(resolve => resolve("Your data"));
async function run(){
try{
var res = await getData();// ns.get('customer?q=phone')
console.log(res);
console.log('success');
}catch(err) {
console.log(err);
console.log('error')
}
}
run();
Комментарии:
1. Привет, спасибо за ответ! Я уже перевел свой код в асинхронный режим. Я считаю, что проблема с моим кодом заключается именно в запросе. Я считаю, что мне нужно изменить (‘customer?q= phone) Я пробовал что-то вроде (‘customer?q= phone IS xxxx), но это не сработало 🙁 . Возможно, мне нужно научиться запрашивать с помощью SuiteQL