jsonapi-datastore icon indicating copy to clipboard operation
jsonapi-datastore copied to clipboard

Support for meta object doesn't seem to work

Open cedv opened this issue 8 years ago • 3 comments

Support for meta object doesn't seem to work.

I tried with both store.sync and store.syncWithMeta, and either way, I can't see the meta information in the datastore when I pull the record using store.find. The rest of the data is fine; I can see the attributes, relationships and links.

This is how I use the datastore (within some AngularJS code):

var store = JsonApiDataStore.store;
store.sync(payload);
$scope.client = store.find('clients', 700);

And this is my JSON payload:

{
  "data": {
    "id": "700",
    "type": "clients",
    "links": {
      "self": "http://localhost:3000/clients/700"
    },
    "attributes": {
      "name": "Dummy Client"
    },
    "relationships": {
      "clientType": {
        "links": {
          "self": "http://localhost:3000/clients/700/relationships/client-type",
          "related": "http://localhost:3000/clients/700/client-type"
        },
        "data": {
          "type": "clientTypes",
          "id": "INTERNAL"
        }
      }
    },
    "meta": {
      "created": {
        "at": "1372275070780",
        "by": {
          "userName": "sys",
          "name": "System",
          "emailAddress": "[email protected]"
        }
      }
    }
  }
}

cedv avatar Nov 01 '16 03:11 cedv

I believe you need to use syncWithMeta

amwmedia avatar Nov 01 '16 13:11 amwmedia

@amwmedia, I believe he means that he couldn't retrieve the meta information in the store object after doing store.syncWithMeta(payload). I'm kinda having the same problem to retrieve the meta object after syncing it in the store. Is there something like store.metadata() to retrieve this information from the store?

italopaiva avatar Jul 12 '17 20:07 italopaiva

@cedv @italopaiva As you can see here, the syncWithMeta method will return an object containing the meta data. So you should do:

var res = store.syncWithMeta(payload);
console.log(res.meta);

I agree the README is not clear on that point. Would any of you guys mind opening a docs PR?

beauby avatar Jul 13 '17 12:07 beauby