Skip to content

Commit 6b98bdb

Browse files
draft: initial changes to finding record using request manager paradigm
1 parent 410d604 commit 6b98bdb

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

guides/release/models/finding-records.md

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ The EmberData store provides an interface for retrieving records of a single typ
22

33
### Retrieving a Single Record
44

5-
Use [`store.findRecord()`](https://api.emberjs.com/ember-data/release/classes/Store/methods/findRecord?anchor=findRecord) to retrieve a record by its type and ID.
6-
This will return a promise that fulfills with the requested record:
5+
Use [`findRecord()`](https://api.emberjs.com/ember-data/5.3/functions/@ember-data%2Fjson-api%2Frequest/findRecord) to retrieve a record by its type and ID.
6+
This will return a response from the server which has a requested record:
77

88
```javascript
9-
// GET /blog-posts/1
10-
this.store.findRecord('blog-post', 1) // => GET /blog-posts/1
11-
.then(function(blogPost) {
12-
// Do something with `blogPost`
13-
});
9+
// GET /blog-post/1
10+
import { service } from '@ember/service';
11+
import { findRecord } from '@ember-data/json-api/request';
12+
13+
@service store
14+
const result = await this.store.request(findRecord('blog-post', '1'));
15+
const blog-post = result.content.data;
1416
```
1517

1618
Use [`store.peekRecord()`](https://api.emberjs.com/ember-data/release/classes/Store/methods/peekRecord?anchor=peekRecord) to retrieve a record by its type and ID, without making a network request.
@@ -22,14 +24,14 @@ let blogPost = this.store.peekRecord('blog-post', 1); // => no network request
2224

2325
### Retrieving Multiple Records
2426

25-
Use [`store.findAll()`](https://api.emberjs.com/ember-data/release/classes/Store/methods/findAll?anchor=findAll) to retrieve all of the records for a given type:
27+
Use [`query()`](https://api.emberjs.com/ember-data/5.3/functions/@ember-data%2Fjson-api%2Frequest/query) to retrieve all of the records for a given type:
2628

2729
```javascript
2830
// GET /blog-posts
29-
this.store.findAll('blog-post') // => GET /blog-posts
30-
.then(function(blogPosts) {
31-
// Do something with `blogPosts`
32-
});
31+
import { query } from '@ember-data/json-api/request';
32+
33+
const result = await store.request(query('blog-post'));
34+
const blog-posts = result.content.data;
3335
```
3436

3537
Use [`store.peekAll()`](https://api.emberjs.com/ember-data/release/classes/Store/methods/peekAll?anchor=peekAll) to retrieve all of the records for a given type that are already loaded into the store, without making a network request:
@@ -38,7 +40,7 @@ Use [`store.peekAll()`](https://api.emberjs.com/ember-data/release/classes/Store
3840
let blogPosts = this.store.peekAll('blog-post'); // => no network request
3941
```
4042

41-
`store.findAll()` returns a `PromiseArray` that fulfills to a `RecordArray` and `store.peekAll` directly returns a `RecordArray`.
43+
`findRecord()` returns a `PromiseArray` that fulfills to a `RecordArray` and `store.peekAll` directly returns a `RecordArray`.
4244

4345
It's important to note that `RecordArray` is not a JavaScript array, it's an object that implements [`MutableArray`](https://api.emberjs.com/ember/release/classes/MutableArray).
4446
This is important because, for example, if you want to retrieve records by index,
@@ -47,21 +49,22 @@ the `[]` notation will not work--you'll have to use `objectAt(index)` instead.
4749
### Querying for Multiple Records
4850

4951
EmberData provides the ability to query for records that meet certain criteria.
50-
Calling [`store.query()`](https://api.emberjs.com/ember-data/release/classes/Store/methods/query?anchor=query) will make a `GET` request with the passed object serialized as query params.
51-
This method returns a `PromiseArray` in the same way as `findAll`.
52+
Calling [`query()`](https://api.emberjs.com/ember-data/5.3/functions/@ember-data%2Fjson-api%2Frequest/query) will make a `GET` request with the passed object serialized as query params.
53+
This method returns a respone from the server in the same way as `findRecord`.
5254

5355
For example, we could search for all `person` models who have the name of
5456
`Peter`:
5557

5658
```javascript
5759
// GET to /persons?filter[name]=Peter
58-
this.store.query('person', {
60+
import { query } from '@ember-data/json-api/request';
61+
62+
const result = await store.request(query('person', {
5963
filter: {
6064
name: 'Peter'
6165
}
62-
}).then(function(peters) {
63-
// Do something with `peters`
64-
});
66+
}));
67+
const person = result.content.data;
6568
```
6669

6770
### Querying for A Single Record

0 commit comments

Comments
 (0)