Fetch Linked Document Fields

Here we explore an example that fetches a specific content field from a linked document.

The fetchLinks option allows you to retrieve a specific content field from a linked document and add it to the document response object.

Note that this will only retrieve content of the following field types:

  • Color
  • Content Relationship
  • Date
  • Image
  • Key Text
  • Number
  • Select
  • Timestamp
  • Title

It is not possible to retrieve the following content field types:

  • Embed
  • GeoPoint
  • Link
  • Link to Media
  • Rich Text
  • Any field in a Group or Slice

The value you enter for the fetchLinks option needs to take the following format:

Copy
{ 'fetchLinks' : '{custom-type}.{field}' }

{custom-type}

The custom type API-ID of the linked document

{field}

The API-ID of the field you wish to retrieve from the linked document

A simple example

The following is an example that uses the fetchLinks option.

In this example we are querying for a "recipe" document with the uid "chocolate-chip-cookies".

The "recipe" Custom Type has a Content Relationship (AKA Document Link) field with the API ID author_link which links to an "author" document.

Inside the "author" document you have a Key Text field with the API ID name.

The following will show you how to retrieve the author name field when querying the recipe.

  • api-v2
  • api-v1
Copy
api.getByUID('recipe', 'chocolate-chip-cookies',
    {'fetchLinks': 'author.name'}
).then(function(document) {
    var author = document.data.author_link;
    // the variable author now works like a top-level document
    var authorName = author.data.name;
    console.log(authorName);
});
Copy
// To retrieve the API object check how to query the API
api.getByUID('recipe', 'chocolate-chip-cookies',
    {'fetchLinks': 'author.name'}
).then(function(document) {
    var author = document.getLink('recipe.author_link');
    // variable author now works like a top-level document
    var authorName = author.getText('author.name');
    console.log(authorName);
});

Fetch multiple fields

In order to fetch more than one field from the linked document, you just need to provide an array of fields. Here is an example that fetches the fields name and picture from the author custom type.

Copy
{ fetchLinks : ['author.name', 'author.picture'] }