# Eager Loading and Saving
# Eager Loading
All belongsTo
, hasOne
and morphOne
related records are eager loaded when fetch
is called.
All other related records have to be added to a static field in the model called eagerLoad
to
have them eagerly loaded with fetch.
Example:
class User extends Model {
static entity = 'users';
static eagerLoad = ['posts'];
static fields () {
return {
id: this.uid(),
name: this.string(''),
posts: this.hasMany(Post, 'userId')
}
}
}
# Eager Saving
Similar to the eager loading there is a "eager saving". When saving (via $persist
or $push
) a
record will automatically sends all belongsTo
related records too to the server.
All other related records have to be added to a static field in the model called eagerSave
to
have them eagerly saved with persist and push.
class User extends Model {
static entity = 'users';
static eagerLoad = ['posts'];
static eagerSave = ['posts'];
static fields () {
return {
id: this.uid(),
name: this.string(''),
posts: this.hasMany(Post, 'userId')
}
}
}
# Eager Syncing
eagerSync
combines these two fields. Adding a relation to this array will make it eagerly loaded
and saved:
class User extends Model {
static entity = 'users';
static eagerSync = ['posts'];
static fields () {
return {
id: this.uid(),
name: this.string(''),
posts: this.hasMany(Post, 'userId')
}
}
}