Ember JS中store.find与store.findRecord函数是否存在差异?
Ember Data中store.find与store.findRecord的差异说明
这两个函数不是单纯的别名关系,存在功能边界的差异,但你给出的「传入类型+单个ID」的查询场景下表现一致,具体细节如下:
函数定位与场景区分
findRecord是Ember Data 2.0及之后官方主推的单资源查询专用API,语义明确,仅用于根据模型类型和ID获取单个记录,返回值为单个记录对象(或其Promise)。find是旧版的通用查询API,功能覆盖更广:- 当调用
this.store.find('rental', params.rental_id)时,内部会直接调用findRecord,所以和你示例中的用法效果完全一致; - 当调用
this.store.find('rental', { city: 'Beijing' })这类「类型+查询参数」的形式时,它会执行多资源查询,等效于后来的queryAPI。
- 当调用
官方支持状态
find属于已废弃的旧API,Ember Data的后续迭代中可能会移除该方法,官方建议使用语义更清晰的专用API替代:单记录查询用findRecord,多记录或条件查询用query/queryRecord。
内容的提问来源于stack exchange,提问作者Chiara Ani
相关产品推荐
相关产品推荐

