7.6 Models -- Finding Records

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);
  }
})
时间: 2024-10-13 22:32:44

7.6 Models -- Finding Records的相关文章

7.4 Models -- Pushing Records into the Store

一.概述 1. store是作为一个所有records的缓存,这些records已经被你的应用程序加载.在你的app中如果你的路由或者一个controller请求一条record,如果它再缓存个中这个store可以立即返回它.否则,这个store必须请求adapter去加载它,这通常意味着从服务器上进行网络访问去检索它.而不是等待应用程序去请求一个条record,然而 ,你可以提前把records推送到store的缓存中. 2. 这是有用的,如果你能很好地意识到用户接下来需要什么records.

7.5 Models -- Persisting Records

一.概述 1. 在Ember Data上以每个实例为基础,records被持久化.在DS.Model的任何一个实例上调用save()并且它将会并且它将产生一个网络请求. 2. 下面是一些例子: var post = store.createRecord('post', { title: 'Rails is Omakase', body: 'Lorem ipsum' }); post.save(); // => POST to '/posts' store.findRecord('post', 1

Synthesis of memory barriers

A framework is provided for automatic inference of memory fences in concurrent programs. A method is provided for generating a set of ordering constraints that prevent executions of a program violating a specification. One or more incoming avoidable

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

这是一个Orchard-Modules的入门教程.在这个教程里,我们将开发两个功能页面分别用于数据录入与数据展示. 完成上述简单功能开发,我们一共需要6个步骤.分别为: 创建Module 创建Model 创建Services 创建Controller.View 创建Route 创建Admin Menu 上面6个步骤可能不太好理解.在这里,我们把他们转换从MVC中的概念让我们更好理解. Module 项目模块 Model 实体层 Controller.View Controller.View Ro

Ember.js 入门指南——model简介2

本文接上一篇<Ember.js 入门指南--model简介1>. 2,核心概念 声明:下面简介内摘抄至http://www.emberjs.cn/guides/models/#toc_. 1,store store是应用存放记录的中心仓库.你可以认为store是应用的所有数据的缓存.应用的控制器和路由都可以访问这个共享的store:当它们需要显示或者修改一个记录时,首先就需要访问store. DS.Store的实例会被自动创建,并且该实例被应用中所有的对象所共享. store可以看做是一个缓存

7.3 Models -- Creating And Deleting Records

一.Creating 1. 你可以通过调用在store中的createRecord方法来创建records. store.createRecord('post', { title: 'Rails is Omakase', body: 'Lorem ipsum' }); 2. 这个store对象可以通过this.store在controllers和routes中使用. 3. 尽管createRecord相当简单,唯一要注意的目前是你不能分配一个promise作为一个关系.例如,如果你希望设置一个p

Sequence Models

Sequence Models This is the fifth and final course of the deep learning specialization at Coursera which is moderated by deeplearning.ai Here are the course summary as its given on the course link: This course will teach you how to build models for n

7.9 Models -- Connection to An HTTP Server

一.概述 1. 如果你的Ember应用程序需要从一个HTTP服务器加载JSON数据,在你的服务器返回的任何格式中,配置EmberData的过程将会加载records. 2. store使用一个被称为adapter的对象去了解如何与网络通信.默认的,store将会使用DS.RESTAdapter,它是一个adapter,它通过转换经由XHR的JSON与一个HTTP服务器通信. 3. 这节的内容被分为两块.第一个块涵盖了一个适配器的默认行为,包括请求records将访问那些URLS和期望返回什么格式

Python笔记-Grouping Records Together Based on a Field

Grouping Records Together Based on a Field Problem You have a sequence of dictionaries or instances and you want to iterate over the data in groups based on the value of a particular field, such as date. Solution The itertools.groupby() function is p