parseListData
Given a response from getListData returns its data in the proper ListData format.
connection.parseListData(responseData)
This function uses parseListProp to find the array containing the data for each instance. Then it uses parseInstanceData on each item in the array Finally, it returns data in the ListData format.
Parameters
- responseData
{Object}
:The response data from the AJAX request.
Use
parseListData
comes in handy when dealing with an irregular API
that can be improved with data transformation.
Suppose an endpoint responds with a status of 200 OK, even when the request generates an empty result set. Worse yet, instead of representing an emtpy set with an empty list, it removes the property.
A request to /services/todos
may return:
{
todos: [
{todo: {id: 0, name: "dishes"}},
{todo: {id: 2, name: "lawn"}}
]
}
What if a request for /services/todos?filterName=bank
responds with
200 OK:
{
}
This response breaks its own schema. One way to bring it in line with a format compatible with ListData is:
connect([
require("can-connect/data/parse/parse"),
require("can-connect/data/url/url")
],{
parseListProp: "todos",
parseListData(responseData) {
if (responseData && !responseData.todos) {
responseData = { todos: [] };
}
return responseData;
}
})