【发布时间】:2019-05-23 15:43:37
【问题描述】:
我在 Ember 中有 Order 和 PaymentMethod 模型,它们具有多对一的关系,如下所示:
order.js
export default DS.Model.extend({
paymentStatus: DS.attr('number', { defaultValue: 1 }),
paymentMethod: DS.belongsTo('payment-method'),
})
payment-method.js
export default DS.Model.extend({
name: DS.attr('string'),
orderPaymentMethods: DS.hasMany('order')
})
订单已保存到数据库中 - 一切正常。然后我有一个路由审查订单,它获取订单模型(我的 API 只返回当前登录用户的订单模型)
review-order.js
export default Route.extend({
model() {
const order = this.store.findAll('order', { include: 'payment_method' }).then((orders) => {
return orders.filterBy('paymentStatus', 1).get('lastObject');
});
return order;
}
});
在我的审核订单模板中,我正在打印付款方式关系,如下所示
{{model.paymentMethod.name}}
这很好用,我在创建订单后过渡到审查订单路线 - 它会打印付款方式的名称。但是,如果我刷新review-order页面,这个就丢失了,我也不知道为什么!
【问题讨论】:
-
您是否将 ember-cli-mirage 用于您的开发环境?如果是这样,那是因为海市蜃楼,它会在浏览/页面刷新时刷新。
-
@Bhabani Panigrahi - 抱歉我应该说清楚,不要使用 Django Rest Framework
-
服务器在 GET /api/orders 上返回什么? paymentMethod 字段是否填写?
-
@DmytroKalinin review-order route的模型可以登录后从user对象获取数据,也可以调用api/order。执行后者然后会给我多个 ID 为空值的订单项。 (我将不胜感激任何帮助理解为什么会发生这种情况!)所以,我正在使用用户对象方法。我包括用户的订单、订单项目和订单付款方式。在我的回复中,包含的有效负载和数据关系中存在正确的数据。这里没有足够的空间 - 我们可以开始聊天吗?
-
最后,我在 Django 的响应中创建了一个额外的字段,这是一个用于支付方式 (paymentMethodField) 的嵌套对象,我可以在模板中直接引用它作为 model.paymentMethodField.name 示例跨度>
标签: ember.js ember-data