7.5 Models -- Persisting Records

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

QT在Ubuntu18中persisting cmake state

QT在Ubuntu18中persisting cmake state

Persisting data with object-relational mapping-002设置JPA的EntityManagerFact

向 Solr 核心添加字段时,为啥会出现“ManagedIndexSchema Error persisting managed schema => FileNotFoundException:

Doctrine 2 OneToOne Identity through foreign Entities Error while persisting

Persisting data with object-relational mapping-006Spring-Data的运行规则(@Enabl