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);
7.5 Models -- Persisting Records的更多相关文章
- 7.6 Models -- Finding Records
		Ember Data的store为检索一个类型的records提供一个接口. 一.Retrieving a single record(检索单记录) 1. 通过type和ID使用store.findR ... 
- 7.4 Models -- Pushing Records into the Store
		一.概述 1. store是作为一个所有records的缓存,这些records已经被你的应用程序加载.在你的app中如果你的路由或者一个controller请求一条record,如果它在缓存中这个s ... 
- Ember.js学习教程 -- 目录
		写在前面的话: 公司的新项目需要用到Ember.js,版本为v1.13.0.由于网上关于Ember的资料非常少,所以只有硬着头皮看官网的Guides,为了加深印象和方便以后查阅就用自己拙劣的英语水平把 ... 
- Orchard入门:如何创建一个完整Module
		这是一个Orchard-Modules的入门教程.在这个教程里,我们将开发两个功能页面分别用于数据录入与数据展示. 完成上述简单功能开发,我们一共需要6个步骤.分别为: 创建Module 创建Mode ... 
- Learning storm book 笔记8-Log Processing With Storm
		有代码的书籍看起来就是爽,看完顺便跑个demo,感觉很爽! 场景分析 主要是利用apache的访问日志来进行分析统计 如用户的IP来源,来自哪个国家或地区,用户使用的Os,浏览器等信息,以及像搜索的热 ... 
- 【原创】Odoo开发文档学习之:ORM API接口(ORM API)(边Google翻译边学习)
		官方ORM API开发文档:https://www.odoo.com/documentation/10.0/reference/orm.html Recordsets(记录集) New in vers ... 
- 7.3 Models -- Creating And Deleting Records
		一.Creating 1. 你可以通过调用在store中的createRecord方法来创建records. store.createRecord('post', { title: 'Rails is ... 
- 7.7 Models -- Working with Records
		Modifying Attributes 1. 一旦一条record被加载,你可以开始改变它的属性.在Ember.js对象中属性的行为就像正常的属性.作出改变就像设置你想要改变的属性一样简单: var ... 
- Models
		Models Models control the data source, they are used for collecting and issuing data, this could be ... 
随机推荐
- LinQ实战学习笔记(一)  LINQ to (Objects, XML, SQL) 入门初步
			LINQ对于笔者来说, 优美而浓缩的代码让人震惊. 研究LINQ就是在艺术化自己的代码. 之前只是走马观花学会了基本的语法, 但是经常在CSDN看到令人惊讶自叹不如的LINQ代码, 还是让人羡慕嫉妒恨 ... 
- 使用SQLite3工具查看sqlite.db文件
			http://www.sqlite.org OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里.OS X包装的是第三版的SQLite,又称SQLite3.这套软件有几 ... 
- Makefile伪目标
			https://www.zybuluo.com/lishuhuakai/note/210174 本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标. 伪目标是这样一个目标:它不代表一个真正 ... 
- CF 217A Ice Skating
			A. Ice Skating time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ... 
- linux的shell后门尝试以及Cython转成C代码编译
			零.背景 最近研究了一下之前的反弹shell的python代码块,写了一点代码尝试在LInux下绑定和反弹shell(正反向),看了一些代码,基本是两种思路.1.本地shell的输入输出通过管道与so ... 
- SSH用户枚举漏洞(CVE-2018-15473)原理学习
			一.漏洞简介 1.漏洞编号和类型 CVE-2018-15473 SSH 用户名(USERNAME)暴力枚举漏洞 2.漏洞影响范围 OpenSSH 7.7及其以前版本 3.漏洞利用方式 由于SSH本身的 ... 
- vue钩子生命周期
			1.beforeCreate // 组件实例刚刚被创建2.created // 实例已经创建完成3.beforeMount // 模板编译之 ... 
- 【Android】 导入项目报错的解决方案
			1.打项目的properties -->android 为其指一个运版本, 2.修改default properties 文件 ,改相应版本等级 3.选中项目,单击右键,选中properties ... 
- Windows运行python脚本文件
			开始学习python就是听说这个语言写脚本文件特别方便,简单使用.学了一段时间,但是直到现在我才直到直到怎么在Windows的cmd上运行脚本文件. 之前一直都是在pycharm上运行,并不实用. 百 ... 
- 9.3Django
			2018-9-3 13:56:18 开始进行Django!!!! 2018-9-3 14:48:25 出去玩去了!!啦啦啦! Django还是很好玩的! 贴上笔记 day60 2018-04-27 1 ... 
