如果dataProvider(Woocommerce)失败,则登录页面(带有firebase auth)不会呈现



如果数据提供程序出现故障,应用程序不会呈现登录页面。

我制作了一个自定义的登录页面,使用firebase作为authProvider。我正在努力让它工作,这样我就可以登录并使用提供的user.id来使用正确的API密钥来获取&从WooCommerce网站更新数据。如果我在数据提供程序中预定义了用户id,一切都很好,比如这个

const user  = async () => {await authProvider.checkAuth()};
const vendor = user.lengt > 0 ? user.uid: 'reader';
let WooCommerce = new WooCommerceAPI(wcConfig[host][vendor]);

如果我直接使用user.uid,在我登录之前它是未定义的,登录年龄根本不会显示。现在我想知道的是,为什么我们要尝试在auth之前使用数据提供程序,以及如何通过它?登录后,供应商(用于wooccommerce api(也不会更新。

WooCommerce数据提供商是自制的,它确实返回了401,但我想知道错误处理中是否缺少什么。

这是实际代码:

export default {
getList: (resource, params) => {

const search = params.filter.q;
const { page, per_page } = params.pagination;
const query = {
page: JSON.stringify(page),
per_page: JSON.stringify(per_page),
search: JSON.stringify(search)
};
let url = `${resource}/?${stringify(query)}`
if (resource === 'system_status'){
url = resource;
}
return WooCommerce.get(url, params.data)
.then((response) => {
return { 
data: response.data,
total: parseInt(response.headers['x-wp-total']),
pages: parseInt(response.headers['x-wp-totalpages'])
};
})
.catch((error) => {
// Invalid request, for 4xx and 5xx statuses
console.log("Response Status:", error.response.status);
console.log("Response Headers:", error.response.headers);
console.log("Response Data:", error.response.data);
return { data: error.response.data };
})
.finally(() => {
// Always executed.
});
},
getOne: (resource, params) => {
return WooCommerce.get(resource + '/' + params.id)
.then((response) => {
// Successful request
return { 
data: response.data
};
})
.catch((error) => {
// Invalid request, for 4xx and 5xx statuses
console.log("Response Status:", error.response.status);
console.log("Response Headers:", error.response.headers);
console.log("Response Data:", error.response.data);
return { data: error.response.data };
})
.finally(() => {
// Always executed.
});
},
update: (resource, params) => {

return WooCommerce.put(resource + '/' + params.id, params.data)
.then((response) => {
// Successful request
return { 
data: response.data
};
})
.catch((error) => {
// Invalid request, for 4xx and 5xx statuses
console.log("Response Status:", error.response.status);
console.log("Response Headers:", error.response.headers);
console.log("Response Data:", error.response.data);
return { data: error.response.data };
})
.finally(() => {
// Always executed.
});
},
create: (resource, params) => {
return WooCommerce.post(resource, params.data)
.then((response) => {
// Successful request

return { 
data: response.data
};
})
.catch((error) => {
// Invalid request, for 4xx and 5xx statuses
console.log("Response Status:", error.response.status);
console.log("Response Headers:", error.response.headers);
console.log("Response Data:", error.response.data);
return { data: error.response.data };
})
.finally(() => {
// Always executed.
});
}
}

显然必须处理配置错误。

let WooCommerce = () => {
try {
return new WooCommerceAPI(config[host][vendor]); 

} catch (error) {
console.error(error)

}
}

本可以做得更好,但至少现在有效了。

相关内容

  • 没有找到相关文章

最新更新