Я работаю над очень старым веб-сайтом, а это значит, что пока моя команда обновляла материал, старый контент переживал годовщину, и из-за этого у многих продуктов не было изображения… и это было проблемой.
Я уже знал наизусть некоторые продукты, у которых не было изображений. Я на самом деле сохранил данные ранее, чтобы я мог иметь дело с ними в ближайшем будущем. Я знал, что скоро смогу решить эту проблему, мне просто нужно было еще немного подумать.
Я потратил много времени на изучение того, как работают API, и обнаружил, что это очень помогает мне каждый день, особенно потому, что все, что мне нужно знать, было там, ожидая меня. API сайта помогло мне увидеть данные по каждому товару. Также я использую этот плагин, чтобы лучше во всем разобраться.
Во-первых, я назвал «list» конфигурацию window.json, чтобы упростить ее использование;
window.json;
const list = window.json;
Затем, чтобы найти элемент, я сделал эту карту ниже, которая возвращает полный список ссылок на изображения: все ссылки на изображения для всех продуктов, которые были в этом списке, какими бы они ни были:
const productImg = list.map(function(element){
return element.yoast_meta[10].content});
И, наконец, я назвал «img» значение, которое я хочу передать через фильтр списка. По сути, это говорит фильтру: «Скажи мне, это, только если это на 100% равно это». Ссылка была изображением-заполнителем:
const imgFilter = list.filter((img) => img.yoast_meta[10].content === "<https://thiswebsite.com/placeholder.png>");
const imgLink = imgFilter.map(function(element){ return (element.link)});
Я смог получить доступ к продукту по этому конкретному ссылочному списку, что сэкономило мне много рабочего времени. Я даже не представляю, что было бы, если бы я в конце концов делал это вручную, ища каждый товар без изображения.
На самом деле, я решаю 3 проблемы в одной.
Я также использовал тот же код для сопоставления продуктов без прикрепленной компании.
window.json; const list = window.json; const idCompanies = list.map(function(element){ return element.companies});
const companiesFilter = list.filter((comp) => comp.companies[0] == null); const noCompanies = companiesFilter.map(function(element){ return (element.link)});
Если значение идентификатора компании было пустым, я знал, что к продукту не привязана компания, и мне было проще это исправить.
Затем с помощью того же кода я смог увидеть, был ли продукт опубликован без сектора. Опять же, если сектор был пуст, я знал, что к продукту не прикреплен ни один сектор:
window.json; const list = window.json; const idSector = list.map(function(element){ return element.sectors});
const sectorFilter = list.filter((sec) => sec.sectors[0] == null); const noSector = sectorFilter.map(function(element){ return (element.link)});
ПЛЮС
Однажды мой коллега сделал что-то не так со статусами продуктов: он установил определенную процедуру, чтобы продукты публиковались быстрее, но также публиковал старые вещи, которые были в приватном статусе (для меня, чтобы использовать в будущее). Когда мы заметили ошибку (примерно через 30 минут), мы немедленно остановили процедуру, но я не знал, сколько продуктов было неправильным. Тогда у меня появилась идея: отфильтровать каждый продукт по дате последнего изменения.
const list = window.json; const yesterday = "2021-10-06";
const modFilter = list.filter((date) => date.modified.includes(yesterday));
const filterMod = modFilter.map(function(element){ return (element.link)});
Если бы последний раз, когда продукт был изменен, был равен значению «вчера», я бы смог увидеть ссылку на продукт и отредактировать ее обратно.