标签: ember-data

使用本地存储适配器自动在ember数据中生成ID

我需要一种为添加到store的新记录生成id的方法。我正在使用本地存储适配器。并搜索某种方式并查找诸如本地存储适配器中的功能:

generateIdForRecord: function () {
    return Math.random().toString(32).slice(2).substr(0, 5);
}
Run Code Online (Sandbox Code Playgroud)

但是此函数的问题是此函数在字符串中创建id,我需要在整数范围内自动递增id。例如1或2或2000,并且如果添加的新记录的ID是记录中ID的最大值,再加上1。我需要在客户端而不是服务器上执行此操作。

ember.js ember-data

5
推荐指数
1
解决办法
1558
查看次数

Ember Data嵌套模型

我在使用NDB的Google App Engine项目中使用EmberJs和Ember-Data.在数据库中,我有Host,Probe和Check实体.只要我的REST api按顺序排列,数据库模型并不重要,但为了清楚起见,这里是我的数据库类:

class Host(ndb.Model):
    hostName = ndb.StringProperty()

hostKey = ndb.Key('Host', 'SomeHostId')

class Probe(ndb.Model):
    checkName = ndb.StringProperty()

probeKey = ndb.Key('Host', 'SomeHostId', 'Probe', 'SomeProbeId')

class Check(ndb.Model):
    checkName = ndb.StringProperty()

checkKey = ndb.Key('Host', 'SomeHostId', 'Probe', 'SomeProbeId', 'Check', 'SomeCheckId')
Run Code Online (Sandbox Code Playgroud)

我添加了密钥以显示每个主机上都运行了一些探针,每个探针都执行一些检查.

  • 主办
    • 探测
      • 校验

在我的App.Js中,我定义了以下模型:

App.Host = DS.Model.extend({
    hostName: DS.attr('string')
    probes: DS.hasMany('probe',{async:true})
});

App.Probe = DS.Model.extend({
    host: DS.belongsTo('host'),
    probeName: DS.attr('string')
    checks: DS.hasMany('check',{async:true})
});

App.Check = DS.Model.extend({
    probe: DS.belongsTo('probe'),
    hostName: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

我已经定义了以下路由器:

App.Router.map(function() {
    this.resource('hosts', function(){
        this.resource('host', { path:':host_id'}, function(){
            this.resource('probes', function(){
                this.resource('probe', …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

5
推荐指数
1
解决办法
4153
查看次数

Ember-Data Websocket 适配器

我需要创建一个 websocket 适配器来处理 Ember-data,并且在 stackoverflow 中遇到了这个例子。

如何将 websocket 与 emberjs 集成?

但是,由于我正在阅读有关使用 Promise 的 Ember 的所有这些内容,我想知道示例中显示的代码是否适用于最新版本的 Ember 和 Ember-data。适配器中的所有方法(例如,find、findAll、createRecord 等)都必须返回承诺吗?

从概念上讲,我想我明白 Promise 的目的是做什么,但我真的不知道如何使用它。有懂的人可以解释一下吗?

ember.js ember-data

5
推荐指数
0
解决办法
2090
查看次数

Ember将空行添加到数据中,并将slug作为id

我有一个资源,我从服务器/项目列出我的所有项目.您可以访问去/ projects /:slug的特定项目.

当我访问项目资源时,我在Ember Inspector中看到了这些数据:

/项目

id  | Slug              | Title                 |
-------------------------------------------------
1   | first-project     | First project         |
-------------------------------------------------
2   | second-project    | Second project        |
-------------------------------------------------
3   | third-project     | Third project         |
Run Code Online (Sandbox Code Playgroud)

当我从项目列表中访问项目时,我得到相同的数据,没有新的ajax请求,一切正常./项目/第一项目

当我刷新/ projects/first-project页面时出现问题.Ember发出一个从服务器获取数据的ajax请求,但它也插入了一个空行,其中slug作为数据的id.

id              | Slug              | Title                 |
-------------------------------------------------------------
first-project   |                   |                       |
-------------------------------------------------------------
1               | first-project     | First project         |
Run Code Online (Sandbox Code Playgroud)

现在访问项目列表它显示了一个项目列表,但在列表的顶部是这个空行.为什么要将这个slug行插入我的数据?也许我的逻辑错了.

<li>
    <a id="ember451" class="ember-view" href="/projects/undefined">
        <script id="metamorph-13-start" type="text/x-placeholder"></script>
        <script id="metamorph-13-end" type="text/x-placeholder"></script>
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

我的项目代码:

App.Router.map(function() {
    this.resource('project', { …
Run Code Online (Sandbox Code Playgroud)

ajax ember.js ember-data

5
推荐指数
1
解决办法
311
查看次数

store.find()方法是否使用来自ember-inflector的不同变形规则?

我正在使用Ember v1.0.0和Ember-Data v1.0.0-beta.3构建一个简单的Ember应用程序.我有一个名为'Categoria'的模型

categoria.coffee:

App.Categoria = DS.Model.extend
  nombre: DS.attr 'string'
  simplified: DS.attr 'boolean'
  candidatos: DS.hasMany 'candidato'
Run Code Online (Sandbox Code Playgroud)

当我尝试通过它的id找到'Categoria'时,我总是收到错误消息: 断言失败:没有找到'categorium'的模型

categoria_route.coffee:

App.CategoriaRoute = Em.Route.extend(
  model: (params)->
    @store.find('categoria', params.categoria_id)
)

App.CategoriaIndexRoute = Em.Route.extend(
  model: ->
    categoria = @modelFor('categoria')
    categoria.reload() if categoria.get('simplified') 
    categoria
)
Run Code Online (Sandbox Code Playgroud)

由于西班牙语命名的模型,我已经指定了变形规则.

store.coffee:

Ember.Inflector.inflector.irregular('categoria', 'categorias')
Ember.Inflector.inflector.rules.irregularInverse['categorias'] = 'categoria'
App.ApplicationAdapter = DS.ActiveModelAdapter()
App.ApplicationSerializer = DS.ActiveModelSerializer.extend()
Run Code Online (Sandbox Code Playgroud)

我想知道商店find方法是否使用了一组不同的变形规则?还是有其他地方我应该宣布这个模型的变形规则?

值得一提的是,对该模型的服务器请求是正确的(到正确的URL)并且它们的响应很好.

我试图使用Ember Guides#Method Find(http://emberjs.com/api/data/classes/DS.Store.html#method_find)中store.find提到的方法使用不同的语法,但错误是相同的.

ember.js ember-data

5
推荐指数
1
解决办法
718
查看次数

如何在EmberJS中合并(聚合)嵌套模型集合?

考虑这个模型:

Grandparent
  parents: DS.hasMany('parent')

Parent:
  grandparent: DS.belongsTo('grandparent')
  children: DS.hasMany('child')

Child:
  parent: DS.belongsTo('parent')
Run Code Online (Sandbox Code Playgroud)

我想一个计算的属性添加childrenGrandparent模型,其中我希望集合Child模型(Grandparent.children =合并的每个Grandparent.parents.children).

怎么做?

对于此示例数据:

Grandparent { id: 0, parents: [0, 1] }

Parent { id: 0, grandparent: 0, children: [0] }
Parent { id: 1, grandparent: 0, children: [1,2] }

Child { id: 0, parent: 0 }
Child { id: 1, parent: 1 }
Child { id: 2, parent: 1 }
Run Code Online (Sandbox Code Playgroud)

我想要Grandparent.get('children')带有ids [0,1,2]的孩子.

编辑:

App.Grandparent.reopen({
  grandchildren: function(){
    var result = …
Run Code Online (Sandbox Code Playgroud)

javascript collections ember.js ember-data

5
推荐指数
1
解决办法
723
查看次数

ember数据中不同的规范化/序列化挂钩有什么区别?

在ember数据v1.0.0-beta.16.1中有许多钩子.

它只是很难理解这些钩子的目的.对于一个新手来说,似乎所有这些都是为了做同样的事情.

我希望了解的应用,

A.规范化和规范化哈希

B.序列化

C. normalizePayload

ember.js ember-data ember-cli

5
推荐指数
1
解决办法
1557
查看次数

在 Ember 中分离环境配置

我正在使用ember-cli来构建我的应用程序,它为我提供了一个很好的app.js文件,我可以在静态资产服务器上提供该文件。在部署时允许单独配置的最惯用的方法是什么?

例如,我可能会告诉我的app.js文件的使用者包含一个config.[js|json]将被加载的额外文件,并且该文件中的值将进入ENV对象......以便我可以将应用程序指向不同的 REST 端点,例如(QA、沙盒、预发布等)而无需重新编译。

我想一定有办法,我只是没有看到。我知道有config/environment.js文件,但它被编译到dist文件夹中。我正在寻找位于打包 JS 旁边的东西。我当然可以一起破解一些东西,所以我不是在寻找黑客。一个ember-cli-addon,也许?我认为必须有一种“余烬方式”来做到这一点。

我只是没有找到它:)

configuration ember.js ember-data ember-cli ember-cli-addons

5
推荐指数
1
解决办法
1465
查看次数

如何将 Rails Grape API 与 Ember 反身模型连接起来

我在将来自 Grape(用 Grape 实体序列化)的 Json 有效负载与 Ember 反射模型连接时遇到问题。模型看起来像这样:

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse 'children'
}
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,我正在尝试对类别-子类别关系进行建模。来自端点的示例 json 响应是:

{
  "category": {
    "id": 1,
    "name": "Sport",
    "child_ids": [
      5,
      6,
      8,
      7
    ]
  },
  "children": [
    {
      "id": 5,
      "name": "Basketball",
      "parent_id": 1
    },
    {
      "id": 6,
      "name": "Football",
      "parent_id": 1
    },
    {
      "id": 8,
      "name": "Running",
      "parent_id": 1
    },
    {
      "id": 7,
      "name": "Volleyball",
      "parent_id": 1
    }
  ]
} …
Run Code Online (Sandbox Code Playgroud)

json ruby-grape ember.js ember-data grape-entity

5
推荐指数
1
解决办法
136
查看次数

ember js 从 json 获取元信息

我的服务器有一个 json 数据:

{
  "post": {
    "id": 1,
    "title": "Progressive Enhancement is Dead",
    "comments": ["1", "2"],
    "links": {
      "user": "/people/tomdale"
    }
  },

  "meta": {
    "total": 100
  }
}
Run Code Online (Sandbox Code Playgroud)

看起来完全像文档(https://guides.emberjs.com/v2.5.0/models/handling-metadata/)我尝试获取元对象但没有成功

export default Ember.Route.extend({
  model() {
    var data = this.store.findAll('post');
    data.then((result) => {
      let meta = result.get('meta');
      console.log(meta); //this return me undefined
    })
    return data;
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript ember.js ember-data json-api

5
推荐指数
1
解决办法
392
查看次数