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);
  • 相关阅读:
    【Leetcode】92. Reverse Linked List II && 206. Reverse Linked List
    【Leetcode】91. Decode Ways
    记一次面经
    涨知识
    B-Tree 漫谈 (从二叉树到二叉搜索树到平衡树到红黑树到B树到B+树到B*树)
    涨知识
    HDU 1754 I Hate It 【线段树单点修改 维护区间最大值】
    POJ 1632 Vase collection【状态压缩+搜索】
    POJ 1011 Sticks 【DFS 剪枝】
    POJ 1088 滑雪 【记忆化搜索经典】
  • 原文地址:https://www.cnblogs.com/sunshineground/p/5165955.html
Copyright © 2011-2022 走看看