Я получаю такие данные, которые регистрируются в консоли с URL-адреса socket.io, который запускается при определенных событиях. Теперь все, что я хотел бы сделать, это получить от этого конкретные данные, например, сумму.
Я пробовал так много всего, чтобы просто получить значение количество и что-нибудь еще, но, похоже, ничего не работает.
Вот единственный код, который я использую в своем файле .php.
<script src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js' type='text/javascript'></script>
<script>
const socketToken = 'mytokenishere'; //Socket token from /socket/token end point
//Connect to socket
const streamlabs = io(`https://sockets.streamlabs.com?token=${socketToken}`);
//Perform Action on event
streamlabs.on('event', (eventData) => {
if (!eventData.for || eventData.for === 'streamlabs' && eventData.type === 'donation') {
//code to handle donation events
console.info(eventData.message);
}
if (eventData.for === 'twitch_account') {
switch(eventData.type) {
case 'follow':
console.info(eventData.message);
break;
case 'subscription':
//code to handle subscription events
console.info(eventData.message);
break;
default:
//default case
console.info(eventData.message);
}
}
});
</script>Я пробовал делать что-то как document.write(eventData.message);, но это возвращает [object Object]
Я также пробовал document.write(["0"].amount);, который возвращает undefined
Я очень ценю все ответы, заранее спасибо, если вы знаете какое-либо решение!
Обновлено: document.write(JSON.stringify(eventData.message)); дает мне
[{
"isTest":true,
"formatted_amount":"$87.00",
"amount":87,
"message":"This is a test donation for $87.00.",
"currency":"USD",
"from":"John",
"from_user_id":1,
"_id":"c3135e2c8011e545091f020f8378***"
}]
Похоже, это объект в массиве, мне нужно выяснить, как сделать так, чтобы это был всего лишь объект.
document.write(eventData.message[0].from);
document.write(eventData.message[0].formatted_amount);
полученные результаты: Джон $ 87.00
Так было очень просто .. Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


eventData.message[0] должен предоставить вам базовый объект, который вы ищете.
у вас есть массив отправляемых объектов, поэтому вам нужно извлечь первый элемент этого массива, обратившись к индексу 0.
например
eventData.message[0].amount должно быть 48
Обновлено: я видел ваше редактирование, в котором вы указываете
It looks like it's an object within an array, I need to figure out how to make it so it's only an object.
Просто создайте новый объект для псевдонима имени, когда вы его получите.
var data = eventData.message[0];
console.info(data.amount);
Клянусь, я пробовал это в какой-то момент, но это работает, спасибо!
Доступ к элементам массива по номеру индекса просто. Например:
console.info(eventData.message[0]) // log first item of eventdata's message
Можете попробовать
eventData.message[0].message?