如何设置模型's加载顺序以避免关系错误

How to set model's load order to avoid relation errors?

本文关键字:顺序 加载 错误 关系 何设置 设置 模型      更新时间:2023-09-26

我有一个用于模型文件的文件夹models。每个文件包含一个模型。模型之间有很多关系(hasMany,belongsTo)。如果我想设置hasMany关系,那么我需要已经定义了子模型,否则我会得到一个错误:

Error: assertion failed: The first argument DS.belongsTo must be a model type or string, like DS.belongsTo(App.Person)

因为模型(上例中为App.Person)尚未定义。

以下是关系定义之一:

App.Seat = DS.Model.extend(
  number: DS.attr('number')
  tour: DS.belongsTo(App.Tour)
)

模型文件夹包括如下:

//= require_tree ./models

我知道在一个文件中定义所有模型(或者至少彼此有关系的模型)的解决方案。

问题:是否有其他解决方案可以将所有模型保存在单独的文件中

我找到了一个非常简单的解决方案:将所有关系定义为对象(例如App.Tour):

App.Seat = DS.Model.extend(
  number: DS.attr('number')
  tour: DS.belongsTo(App.Tour) # <<<<<<<<<<<============ ***here***
)

但作为字符串(例如"App.Tour"),所以将其放在引号中

App.Seat = DS.Model.extend(
      number: DS.attr('number')
      tour: DS.belongsTo("App.Tour") # <<<<<<<<<<<============ ***here***
    )

我认为这种"变通方法"是因为javascript的限制。

更新:ember.js

首选使用字符串