Это сводит меня с ума!
У меня есть топор ios вызов, возвращающий json объект массива в консоли - Проверьте!
>(100) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
>0:
id: 54892250
iid: 1001
ref: "master"
sha: "63e3fc014e207dd4e708749cee3e89a1aa416b7d"
created_at: "2020-03-05T18:57:02.793Z"
updated_at: "2020-03-05T19:06:27.651Z"
>user: {id: someuserid, name: "someuser", username: "someusername", state: "active", avatar_url: "https://assets.gitlab-static.net/uploads/-/system/user/avatar/4534925/avatar.png", …}
>environment: {id: 123456, name: "somename", slug: "somename-iw5iqp", external_url: "https://someaddress.com"}
>deployable: {id: someid, status: "success", stage: "deploy", name: "deploy-staging", ref: "master", …}
status: "success"
__proto__: Object
>1: {id: 54804365, iid: 1000, ref: "filter-out-expired-items", sha: "6225d8018c86fa906063aeea5c10c710ddced14c", created_at: "2020-03-05T12:25:18.949Z", …}
>2: {id: 54804175, iid: 999, ref: "master", sha: "aa5e50c50ba95e9b16cbc57fb968bf9075c625b2", created_at: "2020-03-05T12:24:02.284Z", …}
>3: {id: 54801934, iid: 998, ref: "filter-out-expired-items", sha: "4fc2
Теперь мне нужно сделать 2 результата с таким результатом:
- при полном раскрытии этот отклик велик - и их тысячи. Вместо того, чтобы хранить тысячи гигантских json ответов в состоянии vuex - я хочу сначала извлечь только те значения, которые нас интересуют, а именно:
- id
- ref
- environment.name
- status
- deployable.tag
в нечто вроде:
{ "id": id, "ref": ref, "environment": environment.name, "status": status, "tag": deployable.tag, }
Как сделать Я делаю это?
Этот ответ разбит на страницы на многих страницах выше и является лишь частичным образцом результатов одной страницы.
У меня есть рабочая l oop для этого, и я получаю console.log для всех из них. НО, что мне нужно сделать, это объединить все страницы (теперь разделены на поля выше), прежде чем я фиксирую состояние. Если вы уже пробовали копировать объекты, загружать массивы и все виды утилит, обещающих мир, - но я не могу заставить их работать: :)
Итак, в итоге:
- получить страницу результаты
- squa sh элемент в массиве в упрощенной версии
- собрать их все в объект, который я могу вставить в состояние
Соответствующая часть л oop
// Use headers to get the number of pages
const pages = await axios.head(url, options)
.then((response) => response.headers['x-total-pages']);
console.log('pages=', pages); // DEBUG
// Loop through and push them to an array
for (let i = 0; i <= pages; i += 1) {
console.log('i=', i);
options = {
headers: {
'Private-Token': token,
},
params: {
order_by: 'created_at',
sort: 'desc',
per_page: 100,
page: i,
},
};
axios.get(url, options)
.then((result) => { console.log(result.data); })
}