




























– By Brendan McLoughlin
Ember Data 2.4, a minor version release of Ember Data, is released today. This release represents the work of over 20 direct contributors, and over 76 commits.
Ember Data 2.5 beta.1, the branch of Ember Data that will be released as stable in roughly six weeks, is also being released today.
@nikz has implemented
RFC 101 which provides
more context for RESTAdapter and JSONAPIAdapter errors in Ember
Data. Be sure to check out the
pull request for more
details.
@pangratz added public paths to help you import the DS.EmbeddedRecordsMixin and DS.Serializer modules.
// DS.EmbeddedRecordsMixin
import EmbeddedRecordsMixin from 'ember-data/serializers/embedded-records-mixin';
// DS.Serializer
import Serializer from 'ember-data/serializer';
@danmcclain added two commits to enable support for Ember Data with the Ember CLI Fastboot addon.
For more details on changes in 2.4, review the Ember Data 2.4.0 CHANGELOG.
ds-finder-includeThe ds-finder-include feature allows an include query parameter to
be specified with using store.findRecord() and store.findAll() as
described in RFC 99. The
include parameter tells JSON-API servers which relationships to
sideload in a response. Thanks to
@HeroicEric for implementing this
feature.
// GET /articles/1?include=comments
var article = this.store.findRecord('article', 1, { include: 'comments' });
// GET /articles?include=comments
var article = this.store.findAll('article', { include: 'comments' });
ds-referencesThe ds-references feature implements the references API as described
in RFC 57. References is a
low level API to perform meta-operations on records, has-many
relationships and belongs-to relationships:
Consider the following post model:
// app/models/post.js
import Model from 'ember-data/model';
import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
comments: hasMany(),
author: belongsTo()
});
The references API now allows the possibility to interact with the relationships:
var post = store.peekRecord('post', 1);
// check if the author is already loaded, without triggering a request
if (post.belongsTo('author').value() !== null) {
console.log(post.get("author.name"));
} else {
// get the id of the author without triggering a request
var authorId = post.belongsTo("author").id();
// load the author
post.belongsTo('author').load();
console.log(`Loading author with id ${authorId}`);
}
// reload the author
post.belongsTo('author').reload();
// get all ids without triggering a request
var commentIds = post.hasMany('comments').ids();
// check if there are comments, without triggering a request
if (post.hasMany('comments').value() !== null) {
var meta = post.hasMany('comments').meta();
console.log(`${commentIds.length} comments out of ${meta.total}`);
} else {
post.hasMany('comments').load();
}
// reload comments
post.hasMany('comments').reload();
Thanks to @pangratz for implementing this feature.
ds-transform-pass-optionsThe ds-transform-pass-options feature allows for smarter transforms
by passing the options object from DS.attr([type], [options]) into
the transform.
// app/models/post.js
export default DS.Model.extend({
title: DS.attr('string'),
markdown: DS.attr('markdown', {
markdown: {
gfm: false,
sanitize: true
}
})
});
// app/transforms/markdown.js
export default DS.Transform.extend({
serialize: function (deserialized, attributeMeta) {
return deserialized.raw;
},
deserialize: function (serialized, attributeMeta) {
var options = attributeMeta.options.markdown || {};
return marked(serialized, options);
}
});
Thanks to @pangratz for implementing this feature and @knownasilya for proposing the RFC.
For more details on changes in the 2.5 beta, please review the Ember Data 2.5.0-beta.1 CHANGELOG.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。