gpt4 book ai didi

javascript - 保留带有嵌入式记录的 ember 模型

转载 作者:行者123 更新时间:2023-12-03 11:42:07 26 4
gpt4 key购买 nike

我有以下 ember 模型:

App.Location = DS.Model.extend({
street: DS.attr('string'),
city: DS.attr('string'),
area: DS.attr('string'),
lat: DS.attr('string'),
lng: DS.attr('string'),
report: DS.belongsTo('report', {embedded: 'always'})
});

App.Report = DS.Model.extend({
title: DS.attr('string'),
description: DS.attr('string'),
reg_num: DS.attr('string'),
location_str: DS.attr('string'),
location: DS.belongsTo('location', {embedded: 'always'})
});

App.ReportController中,当我尝试保存报告时,我还想将位置对象嵌入到请求负载中。到目前为止,我尝试了以下代码:

App.ReportController = Ember.ObjectController.extend({
actions: {
saveReport: function(record) {
var self = this,
report = this.get('model'),
location = this.store.createRecord('location', {
lat: this.get('lat'),
lng: this.get('lng')
});
report.set('location', location);
report.save().then(function (result) {
self.transitionToRoute('list');
});
}
}
}
});

但是,在请求负载中,位置始终为 location: null

如何将位置添加到请求负载?

最佳答案

也许我遗漏了一些东西,但我知道处理嵌入记录的两种不同方法(ember-data >= 1.0.0-beta):

  1. Rewriting DS.Adapter's methods :序列化/提取*/规范化等,- 以 Ember 可以使用的方式设置 JSON 有效负载。
  2. 使用DS.EmbeddedRecordsMixin用于配置 DS.Serializer。

我可以假设你得到 location: null因为default DS.Serializer's behavior with serializing relationships :Ember 预计 idbelongTo hasMany 中的属性和 ID 列表属性(property)。 LocationModel创建后和保存到服务器数据库之前没有 ID。当默认序列化程序在保存 ReportModel 时尝试形成传出 json 有效负载时附有新创建的LocationModel ,它的 id 为 LocationModel ( null ) 并将该 id 放入 location 中属性(property)。

关于javascript - 保留带有嵌入式记录的 ember 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26230172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com