Кроме того, что ваше второе решение содержит синтаксические ошибки, это также не самый читаемый способ сделать это ...
Но почему вы пытаетесь изобрести колесо?
Вы можно использовать API URL
, который доступен как на стороне клиента , так и в Node.js:
posts: (ppp, page) => {
const url = new URL('/wp-json/wp/v2/posts')
if(ppp) url.searchParams.append('per_page', ppp)
if(page) url.searchParams.append('page', page)
return requests.get(url.href)
}
Однако, если вы не можете используйте вышеупомянутое решение по некоторым причинам, вы все еще можете реализовать аналогичный алгоритм, который работает как вышеупомянутое решение. Например, вы можете использовать массив:
posts: (ppp, page) => {
const urlParams = []
if(ppp) urlParams.push(`per_page=${ppp}`)
if(page) urlParams.push(`page=${page}`)
return requests.get(`/wp-json/wp/v2/posts?${ urlParams.join('&') }`)
}
или еще более гибкое решение:
posts: (ppp, page) => {
const urlParams = {
per_page: ppp, //per_page=ppp
page, //page=page
//Add more here if you want
}
return requests.get(`/wp-json/wp/v2/posts?${
Object
.entries(urlParams)
.filter(([k, v]) => v) //If value is truthy
.map(e => e.join('=')) //Concatenate key and value with =
.join('&') //Concatenate key-value pairs with &
}`)
}
Но, если вы хотите придерживаться своей версии, вот фиксированный пример это:
requests.get(`/wp-json/wp/v2/posts?${ppp ? `per_page=${ppp}` : ''}${(ppp && page) ? '&' : ''}${page ? `page=${page}` : ''}`)