parseInstanceData
Returns the properties that should be used to make an instance given the results of getData, createData, updateData, and destroyData.
connection.parseInstanceData(responseData)
This function will use parseInstanceProp to find the data object representing the instance that will be created.
Parameters
- responseData
{Object}
:The response data from getData, createData, or updateData.
Use
parseInstanceData
comes in handy when dealing with an irregular API
that can be improved with data transformation.
Suppose a request to /services/todos
returns:
{
baseUrl: "/proxy/share",
todo: {
id: 0,
name: "dishes",
friendFaceUrl: "friendface?id=0",
fiddlerUrl: "fiddler?id=0"
}
}
The baseUrl property is meta-data that needs to be incorporated into the instance data. One way to deal with this is:
connect([
require("can-connect/data/parse/parse"),
require("can-connect/data/url/url")
],{
parseInstanceProp: "todo",
parseInstanceData(responseData) {
['friendFaceUrl', 'fiddlerUrl'].map(urlProp => {
responseData.todo[urlProp] = [
responseData.baseUrl,
responseData.todo[urlProp]
].join('/');
});
return responseData;
}
})
This results in an object like:
{
id: 0,
name: "dishes",
friendFaceUrl: "/proxy/share/friendface?id=0",
fiddlerUrl: "/proxy/share/fiddler?id=0"
}