zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    JAVA企业级开发-BOM&DOM(03)
    JAVA企业级开发-JavaScript(02)
    JAVA基础--IO输入输出(File使用)17
    day03-CSS(1)
    day02-HTML(2)
    day01-HTML(1)
    apache2.4 只允许合法域名访问网站 禁止使用ip、非法域名访问
    电子书格式转换
    推荐几本学习MySQL的好书
    Linux上vi(vim)编辑器使用教程
  • 原文地址:https://www.cnblogs.com/sunshineground/p/5165955.html
Copyright © 2011-2022 走看看