我正在升级到 ember-cli 和 ember 2.3。假设我有一个名为 User 的模型和一个名为 Post 的模型,还有一个 user ...
posts: DS.hasMany('post', {async:true})
现在,这按我期望的方式工作,延迟加载数据而不加载帖子,除非 .js 或模板中需要它。所以当我这样做的时候
{{#each user.posts as |post|}}
{{post.title}}
{{/each}}
我让每个帖子都毫无问题地呈现其标题。但是,在我的服务器日志中,我看到了这一点:
GET /posts/2
GET /posts/7
GET /posts/13
其中数字是帖子 ID。这是意料之中的,因为当我从服务器返回一个用户实例时,我会返回一个 ID 列表作为参数“posts”。所以用户实例有:
...
'posts': '2,7,13'
...
在其数据中。
现在我的问题是:当我使用 ember-data 1.0(pre ember-cli 和 pre ember 1.13)时,我记得这个调用是针对同一个用例对数据库进行的:
GET /posts?ids=2&7&13
或沿着这条线的东西。我不记得确切的格式,但是,我可以使用这行代码访问服务器端的 id 列表:
var ids = req.query.ids.toString();
这给了我一个逗号分隔的 id 列表(字符串格式)。然后我会将其转换为 sql 语句
SELECT * from posts where id in (2,7,13)
我认为,这个 SQL 调用在 Ember 端被解释为 manyArray,并且很容易像您期望的 Ember 数组那样表现。
我怎样才能让这种情况再次发生?我非常有信心我遗漏了一些东西,并且我不必“破解” ember-data;我非常想将这些调用压缩为一个,而不是为每个“帖子”单独调用数据库。
我还应该提到,我不打算为这些调用进行 {async:false}。