Ember Data的store为检索一个类型的records提供一个接口。

一、Retrieving a single record(检索单记录)

1. 通过type和ID使用store.findRecord()去检索一条record。这将返回一个promise,它通过请求的record来实现:

var post = this.store.findRecord('post', 1); // => GET /posts/1

2. 通过type和ID使用store.peekRecord()去检索一条record,没有产生网络请求。只有当它已经在sotre中存在时,这将返回这条record。

var post = this.store.peekRecord('post', 1); // => no network request

二、Retrieving mutiple records

1. 对于一个给定的type,使用store.findAll()来检索所有的records。

var posts = this.store.findAll('post'); // => GET /posts

2. 对于一个给定的type,使用store.peekAll()来检索所有的records,这些records已经被加载到store中,不会产生网络请求:

var posts = this.store.peekAll('post'); // => no network request
  • store.findAll()返回一个DS.PromiseArray,它实现DS.RecordArray并且store.peekAll直接返回一个DS.RecordArray
  • 注意DS.RecordArray不是一个JS数组,这很重要。它是一个实现了Ember.Enumerable的对象。这很重要,因为,例如,如果你想通过index来检索records,[]符号没有用,你必须使用objcetAt(index)代替。

三、Querying for multiple records

Ember Data提供了查询满足某些条件的记录的能力。调用store.query()将获得一个GET请求,并将传递的对象序列化为查询参数。这个方法和find方法一样返回DS.PromiseArray

例如,我们可以查询所有的名字为Peterpserson models

var peters = this.store.query('person', { name: 'Peter' }); // => GET to /persons?name=Peter

四、Integrating with the route's model hook

1. 就像在 Specifying a Route's Model中讨论的一样,routes负责告诉它们的模板加载哪一个model。

2. Ember.Routemodel hook支持开箱即用的异步的值。如果你从model hook中返回一个promise,这个路由器将会等待直到这个promise完成渲染模板。

3. 使用Ember Data使得它很容易使用异步数据编写apps。仅仅从model hook中返回请求的record,并且让Ember处理是否需要网络请求。

app/router.js

var Router = Ember.Router.extend({});

Router.map(function() {
this.route('posts');
this.route('post', { path: ':post_id' });
}); export default Router;

app/routes/posts.js

export default Ember.Route.extend({
model() {
return this.store.findAll('post');
}
});

app/routes/post.js

export default Ember.Route.extend({
model(params) {
return this.store.findRecord('post', params.post_id);
}
})

7.6 Models -- Finding Records的更多相关文章

  1. 7.4 Models -- Pushing Records into the Store

    一.概述 1. store是作为一个所有records的缓存,这些records已经被你的应用程序加载.在你的app中如果你的路由或者一个controller请求一条record,如果它在缓存中这个s ...

  2. phalcon: 查找记录(Finding Records)可用的查询设置如下:

    可用的查询设置如下: 参数 描述 举例 conditions Search conditions for the find operation. Is used to extract only tho ...

  3. 7.5 Models -- Persisting Records

    一.概述 1. 在Ember Data上以每个实例为基础,records被持久化.在DS.Model的任何一个实例上调用save()并且它将产生一个网络请求. 2. 下面是一些例子: var post ...

  4. Ember.js学习教程 -- 目录

    写在前面的话: 公司的新项目需要用到Ember.js,版本为v1.13.0.由于网上关于Ember的资料非常少,所以只有硬着头皮看官网的Guides,为了加深印象和方便以后查阅就用自己拙劣的英语水平把 ...

  5. Orchard入门:如何创建一个完整Module

    这是一个Orchard-Modules的入门教程.在这个教程里,我们将开发两个功能页面分别用于数据录入与数据展示. 完成上述简单功能开发,我们一共需要6个步骤.分别为: 创建Module 创建Mode ...

  6. Searching in a Radius using Postgres[Marked]

    Searching in a Radius using Postgres Creating a GEO application has never been easier. You can have ...

  7. 规约模式(Specification Pattern)

    一.引言 最近在看一个项目的源码时(DDD),对里面的一些设计思想和设计思路有了一些疑问.当看到(Repository层)中使用了 spec.SatisfiedBy() 时,感觉有点懵.于是在项目中搜 ...

  8. 【原创】Odoo开发文档学习之:ORM API接口(ORM API)(边Google翻译边学习)

    官方ORM API开发文档:https://www.odoo.com/documentation/10.0/reference/orm.html Recordsets(记录集) New in vers ...

  9. Synthesis of memory barriers

    A framework is provided for automatic inference of memory fences in concurrent programs. A method is ...

随机推荐

  1. SharpGL学习笔记(四) 正射投影

    上节谈到投影变换分为透视投影(perspective projection)和正射投影(orthographic projection)两种. 透视投影我们已经介绍过了, 现在谈谈正视投影. 正射投影 ...

  2. no such file to load -- bundler/setup

    bundle install rake routesrake aborted!no such file to load -- bundler/setup 解决 gem install bundler

  3. Android数据库开发——SQLite

    上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app ...

  4. 【BZOJ2658】[Zjoi2012]小蓝的好友(mrx) 平衡树维护笛卡尔树+扫描线

    [BZOJ2658][Zjoi2012]小蓝的好友(mrx) Description 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事,为了回馈各位比赛选手,此题的主角是贯穿这次比赛的 ...

  5. 【CF886D】Restoration of string 乱搞

    [CF886D]Restoration of string 题意:对于给定的一个母串,定义一个字符串是出现频率最多的,当且仅当它在母串中出现的次数最多(可以有多个出现次数最多的,出现的位置可以重叠). ...

  6. iOS interface适配

  7. 微信小程序:wx.navigateTo中url无法跳转问题(app.json中配置的tabBar与wx.navigateTo中url引用相同页面导致)

    今天在做微信小程序时,设置wx.navigateTo页面跳转并传参数,点击始终没有效果,代码如下: //事件处理函数 newsDetail: function (event) { console.lo ...

  8. MYSQL中GROUP BY不包含所有的非聚合字段时的注意事项

    本文导读:在MYSQL中使用GROUP BY分组时,我们可以select 多个非聚合字段,但是这些字段不在GROUP BY中,这样的SQL查询在SQL SERVER.ORACLE中是不合理的,且会报错 ...

  9. Logstash在Linux上安装部署

    Logstash 简介: Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳.按照自己条件分析过滤出符合数据导入到可视化界面.它可以实现多样化的数据源数据全量或增量传 ...

  10. 【紫书】Rails UVA - 514 栈

    题意:判断出栈顺序是否合法 题解:两个指针,A指向入栈序列,B指向出栈. 的分三种情况:if     1.A==B :直接入栈加出栈即可A++,B++ else 2.和栈顶相同,直接出栈A==stac ...