搜索Ember数据async hasMany id而不加载所有id记录
Searching Ember data async hasMany ids without loading all the id records
我正试图在数千条记录中搜索特定的记录。我已经加载了一个用户模型,它有几千个异步发货。换句话说,我让序列化程序发送带有用户模型的shipment_ids
。
App.User = DS.Model.extend({
shipments: DS.hasMany('shipment', { async: true })
});
我想搜索所有这些id,看看某个特定记录的id是否在其中。然而,我不想去api并加载每一条记录。我只想能够在shipment_ids
中进行搜索。
我有一个jsbin,展示了它加载所有记录的过程。我该如何更改它,使其不会对发货进行任何api调用,并且仍然可以找到特定的记录?
而不是做
this.get('shipments').any(function(shipment){
return shipment.get('id') === "10124";
必须有办法只通过id,不是吗?
谢谢!
"获取belongsTo ID而不获取记录"中描述的解决方案似乎在Ember Data 1.0.0-beta.10版本中可以工作。简单地说,您可以执行以下操作来访问底层
modelInstance.get('data.belongsToRelation.id');
大概你也可以这样做(尽管我还没有测试过):
modelInstance.get('data.hasManyRelation');
原始答案(请勿使用):
我在belongsTo上为id添加了第二个模型字段,从而实现了这一点。我的示例:
App.User=DS.Model.extend({group:DS.belongsTo('group',{async:true}),groupId:DS.attr("编号")});
也许你能做到?
App.User=DS.Model.extend({装运:DS.hasMany("装运",{async:true}),shipmentIds:DS.attr("数组")});
您需要在app/transforms/array.js中添加一个数组转换(假设您使用ember-cli)
从"成员数据"导入DS;
var ArrayTransform=DS.Transform.extend({反序列化:函数(序列化){返回序列化;},serialize:函数(反序列化){返回反序列化;}});
导出默认的ArrayTransform;
让我知道它是否有效,因为我可能很快就会需要在我的应用程序中进行类似的操作。
这个黑客很臭,但这是我找到的唯一方法。并且是用_data
进行搜索
this.get('content._data.shipments').any(function(shipment){
return shipment.get('id') === "10124";
});
它不会进行任何api调用。但必须有一种更容易接受的方法,在更新Ember时不会出现故障。
这里有一个更新的jsbin来显示这一点。有人有更好的解决方案吗?
谢谢!
由于Ember Data 2.3,您可以使用以下代码:
// get all ids without triggering a request
var commentIds = post.hasMany('comments').ids();
请参阅http://emberjs.com/blog/2016/01/12/ember-data-2-3-released.html详细信息。
- css样式加载+id.例如加载1、加载300
- 在 JavaScript 中读取/加载 JSON,其中 'id' = 'x'
- 提交youtube播放列表id并从id加载播放列表
- 如何在不重新加载的情况下在表单编辑中更改主键后刷新jqgrid行id
- 无法访问字段'通过aspx页面上的javascript函数传递来自代码隐藏中函数调用的客户端id的s值(页面加载
- 为什么可以't我通过ID访问这个动态加载的DOM元素(没有iframe)
- 单击图像时从数据库加载选项id
- 加载后修改页面上所有没有id的图像(src)
- 如何使用页面加载时给出的 id 调用命名空间
- 如何使用JQuery.Load访问Div中加载URL的UL“id”,“name”等,以设置JQuery树视图
- 如何使用代码点火器根据传递的 ID 在引导模式中加载视图
- 通过 id-Extjs 将数据加载到模型中
- 使用隐藏字段 ID 选择器加载另一个字段中的文本
- Angular 2 - 如何为动态加载的组件设置 id 属性
- 在加载列表时定义 dhtmlxList 的 ID 值
- iOS - 将图像从网站上的javascript中的id加载到UIImageView中
- 按文档 ID 加载 Mootools
- 根据ID加载css样式表
- 隐藏数据id加载和显示点击按钮
- 从父页面隐藏表单,直到特定的iframe元素ID加载