Здравствуйте. Получаю предложенные посты методом wall.get, для дальнейшей обработки данных.
После эти данные передаются в метод wall.post.
Вот пример запроса wall.get:
const content = await vk.api.wall.get({
owner_id: config.idGroup,
filter: 'suggests'
});
},
А вот сам запрос публикации поста, wall.post :
const suggestsPost = await vk.api.wall.post({
owner_id: config.idGroup,
post_id: content.id,
from_group: from_groupFlag,
signed: signedFlag
});
Суть такова, пользователь предлагает запись, мы получаем эту запись и публикуем по id поста
Конечно документация обязывает передавать текст или приложенный контент(attachments), но если с текстом нет проблем, даже если его не передавать в запросе, то с приложениями(attachments) не всё так хорошо. Из всего массива, публикуется только первый элемент. Предложили 2 фотографии, опубликуется только первая. Связи с этим, появилась нужда передавать параметр attachments в методе wall.post, но не понятно, как перебирать сами свойства объектов и передавать в метод wall.post.
Вот пример как выглядит массив объектов attachments, что мы получаем.
А вот пример, как должен выглядеть сам параметр attachments .
Вот, как я пытаюсь реализовать парсинг данных.
let attachments = content.attachments;//помещаю массив в отдельную переменную
let attach = new Array();//объявление итогового массива
for (var i = 0; i < attachments.length; i++) {
let attachType = attachments[i].type;//тип контента
(x) let attachId = attachments[i].attachType.id;//id контента
(x) let attachOwner = attachments[i].attachType.owner_id;//id владельца контента
attach[i] = attachType + attachOwner + '_' + attachId;
}
if (attachments.length > 1) {
let attachResult = attach.join(',');
}
else {
let attachResult = attach;
}
console.log(attachResult);
const suggestsPost = await vk.api.wall.post({
owner_id: config.id.groupID2,
post_id: content.id,
attachments: attachResult,
from_group: from_groupFlag,
signed: signedFlag
});
Проблемные строчки помечены значком '(x)' . Я не могу понять, как стоит обращаться к объекту, если его свойства зависят друг от друга.
Конечно, как вариант, можно через switch создать кучу кейсов и смотреть, по type, но это не надежно, так-как любое изменение в названии или добавлении нового типа приведет к проблеме. Хочется, что бы программа сама распознавала название и могла обращаться по нему.