问题描述
我的程序使用慈善数据库API根据用户搜索显示用户慈善组织。目前,我已经进行了设置,以便用户可以通过关键字进行搜索,但是我希望用户可以添加参数来缩小其搜索范围,例如州,城市或等级。我遇到的问题是,如果我包括参数的可能性,而用户将该参数留空,它将无法完成获取请求。
function fetchData(search,state){
let params = {
app_id: app_id,app_key: app_key,search: search,state: state,}
//this program formats the query paramaters
let searchQuery = formatQueryParams(params)
let searchURL = url + searchQuery;
fetch(searchURL)
.then(response =>response.json() )
.then(data => updateDOM(data))
.catch(err => {
console.log(`${err.message}`)
})
}
解决方法
我通常只添加如果传入的字段,那么如果没有传入,则初始化参数,如果传入,则可以将其添加到参数中。
function fetchData(search,state){
let params = {
app_id: app_id,app_key: app_key,search: search,}
// add this for state
if (state) params.state = state;
//this program formats the query paramaters
let searchQuery = formatQueryParams(params)
let searchURL = url + searchQuery;
fetch(searchURL)
.then(response =>response.json() )
.then(data => updateDOM(data))
.catch(err => {
console.log(`${err.message}`)
})
}
,
您可以像这样将对象中的必需参数传递给fetchData
函数
function fetchData(search,paramsObject)
然后在params
对象内部,可以传播之前作为参数传递的paramsObject
。
let params = {
app_id: app_id,...paramsObject
}