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).then(function(post) {
  post.get(‘title‘); // => "Rails is Omakase"

  post.set(‘title‘, ‘A new post‘);

  post.save(); // => PUT to ‘/posts/1‘
});

二、Promises

1. save()返回一个promise,所以它是非常容易处理成功和失败的情况的。这里是一个普遍的模式:

var post = store.createRecord(‘post‘, {
  title: ‘Rails is Omakase‘,
  body: ‘Lorem ipsum‘
});

var self = this;

function transitionToPost(post) {
  self.transitionToRoute(‘posts.show‘, post);
}

function failure(reason) {
  // handle the error
}

post.save().then(transitionToPost).catch(failure);

// => POST to ‘/posts‘
// => transitioning to posts.show route

2. promises甚至使处理失败的网络请求变得容易:

var post = store.createRecord(‘post‘, {
  title: ‘Rails is Omakase‘,
  body: ‘Lorem ipsum‘
});

var self = this;

var onSuccess = function(post) {
  self.transitionToRoute(‘posts.show‘, post);
};

var onFail = function(post) {
  // deal with the failure here
};

post.save().then(onSuccess, onFail);

// => POST to ‘/posts‘
// => transitioning to posts.show route

3. 在这里 here你可以学到更多关于promises,但是这里是另外一个关于展示如何重试持久化的例子:

function retry(callback, nTimes) {
  // if the promise fails
  return callback().catch(function(reason) {
    // if we haven‘t hit the retry limit
    if (nTimes > 0) {
      // retry again with the result of calling the retry callback
      // and the new retry limit
      return retry(callback, nTimes - 1);
    }

    // otherwise, if we hit the retry limit, rethrow the error
    throw reason;
  });
}

// try to save the post up to 5 times
retry(function() {
  return post.save();
}, 5);
时间: 2024-11-10 15:15:48

7.5 Models -- Persisting Records的相关文章

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()去检索一

7.4 Models -- Pushing Records into the Store

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

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可以看做是一个缓存

Log Processing With Storm

有代码的书籍看起来就是爽,看完顺便跑个demo,感觉很爽! 场景分析 主要是利用apache的访问日志来进行分析统计 如用户的IP来源,来自哪个国家或地区,用户使用的Os,浏览器等信息,以及像搜索的热词等信息的统计 这里日志信息如下 24.25.135.19 - - [1-01-2011:06:20:31 -0500] "GET / HTTP/1.1" 200 864 "http://www.adeveloper.com/resource.html" "M

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

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和期望返回什么格式

Persisting Data to the Device

Persisting Data to the Device Edit PagePage History Overview The Android framework offers several options and strategies for persistence: Shared Preferences - Easily save basic data as key-value pairs in a private persisted dictionary. Local Files -

7.2 Models -- Defining Models

一.概述 1. 模型是一个类,它定义了你呈现给用户的数据的属性和行为.用户希望如果他们离开你的应用程序,并返回后(或如果他们刷新页面)看到的任何东西应该被一个model代表. 2. 确保在ember.js后引入ember-data.js: <script type="text/javascript" src="ember.js"></script> <script type="text/javascript" src