Sha*_*rey 6 ember.js ember-data
因此,假设您有一个用户模型,该模型设置为相当标准的API.在前端,您有一个Ember项目,该项目也具有该用户模型.正常的创建调用将类似于以下内容:
store.createRecord('user', {email: 'test@gmail.com'}).save();
Run Code Online (Sandbox Code Playgroud)
这会发送一个POST请求/api/users.但是,相当广泛的API支持是同时创建多个模型.因此,例如,代替POST调用只是在user: {email: 'test@gmail.com'}其下发送一个对象将发送一个对象数组,如users: [{email: 'test@gmail.com'}, {email: 'test2@gmail.com'}, ...].
我在ember中看到它的处理方式是在运行时只进行多次创建调用.然而,这非常低效,我想知道Ember是否支持同时保存多个模型?你会如何在Ember实现这一目标?
如果您具体询问 Ember Data,我不知道有什么方法可以做到这一点(我认为不可能在集合/数组上使用 save() 的任何等效项)。可能有其他可行的数据库(例如你可以检查Orbit.JS - 这是我还没有做过的事情)
我的做法是在后端有一个自定义端点,该端点接收特定的 JSON 负载并创建资源。您可以通过发出常规的 ajax 调用来完成此操作,请参阅此示例(来自我的项目)。
let content = //get content that you want to post
let accessToken = this.get('session.session.authenticated.token');
Ember.$.ajax({
data: JSON.stringify(content),
dataType: 'json',
method: 'POST',
url: 'path/to/my/custom/end/point',
headers: {
'Content-Type': 'application/json',
'Authorization': `Beader ${accessToken}`
}
}).then((result) => {
// Code for success
}, (jqXHR) => {
// Code for error
}).always(() => {
// Code for always/finally
});
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这都是自定义代码,没有利用 Ember 数据存储或模型。到目前为止我还没有找到更好的答案。
编辑:看到安多罗夫的答案后。我忘了提一件事。我正在使用 Ember Data 2.0(默认为 JSONAPI),并且EmbeddedRecordsMixin 不适用于JSON API