Code Editor + RequireJS Visual Test

Open Developer tools > Console

'use strict';

/* Animal.js */

var Entity = require('back4app-entity').models.Entity;

module.exports = Entity.specify({
  name: 'Animal',
  attributes: {
    legs: {
      type: 'Number',
      default: 4
    },
    createdAt: {
      type: 'Datetime',
      default: Date.now
    }
  },
  methods: {
    getInfo: function () {
      return "I'm an Animal with {{legs}} legs, created at {{createdAt}}"
        .replace('{{legs}}', this.legs)
        .replace('{{createdAt}}', new Date(this.createdAt));
    }
  }
});

'use strict';

/* Dog.js */

module.exports = require('./Animal').specify({
  name: 'Dog',
  attributes: {
    name: {
      type: 'String',
      default: 'Toby'
    }
  },
  methods: {
    getInfo: function () {
      return "I'm a Dog named '{{name}}', with {{legs}} legs, created at {{createdAt}}"
        .replace('{{name}}', this.name)
        .replace('{{legs}}', this.legs)
        .replace('{{createdAt}}', new Date(this.createdAt));
    }
  }
});

'use strict';

/* Boy.js */

var Entity = require('back4app-entity').models.Entity;

module.exports = Entity.specify({
  name: 'Boy',
  attributes: {
    name: {
      type: 'String',
      default: 'John'
    },
    dog: {
      // type: 'Dog'
      default: Entity.new('Dog')
    }
  },
  methods: {
    getInfo: function () {
      return "I'm a Boy named '{{name}}', who has a dog named '{{dogName}}'"
        .replace('{{name}}', this.name)
        .replace('{{dogName}}', this.dog.name);
    }
  }
});