resolveArrayData ⇒ Promise<Array<Attributes>>
resolveArrayData(Promise<Array<SequelizeModel>>
, withMethods :Boolean=false
) ⇒ Promise<Array<Attributes>>
Converts a promised Array
of SequelizeModel instances into a promised
Array
of Attributes objects.
Returns: Promise<Array<SequelizeModel>>
Param | Type | Description |
---|---|---|
promiseInstances |
Promise |
A a promised Array of SequelizeModel instances |
withMethods |
Boolean |
Populate Attributes objects with sequelize methods |
Module Import
import { resovleArrayData } from 'sequelize-relay';
About
The resolveArrayData
and getArrayData methods are very similar as they both return
an Array of Attributes objects. The difference is that the getArrayData
method expects an Attributes Array
, and
resolveArrayData
expects a promised Attributes Array
instead.
Examples
Example 1
var User = sequelize.define('user', {
firstName: Sequelize.STRING,
lastName: Sequelize.STRING
});
User.sync({force: true}).then(function () {
// Table created
return User.create({
firstName: 'John',
lastName: 'Hancock'
});
});
Now let's pretend we created 10 different Users and we wanted to retrieve a list of all 10, but only get their attributes.
import { Users } from 'myCoolDatabase';
async function getUserList () {
return await resolveArrayData(Users.findAll());
} // => [{firstName: 'John' ...}, {...}]
Example 2
Given this Person Model For more information about how sequelize models work, click here.
Consider the following GraphQL Schema Type for personType
(shortened for brevity):
var personType = new GraphQLObjectType({
fields: () => ({
...,
articlesAuthored: {
type: articleConnection,
args: connectionArgs,
resolve: (person, args) =>
connectionFromPromisedArray(
resolveArrayData(person.getArticles()), args
)
}
})
});
For more information about connectionArgs
and connectionFromPromisesdArray
, click here.
person.getArticles
, a sequelize method, will be passed in as our argument
to resolveArrayData
- which will then in turn return a correctly
structured promise to connectionFromPRomisedArray
which is a method
imported from thw graphql-relay-js
library.
We are running our helper methods along with graphql-relay and graphql
libraries, the usage of resolveArrayData
can be noted here:
resolve: (person, args) =>
connectionFromPromisedArray(
resolveArrayData(person.getArticles()), args
)
So when we run the following Relay style Query:
query PersonRefetchQuery {
node(id: "UGVyc29uOjI=") {
id
... on Person {
id
givenName
familyName
address
articlesAuthored {
edges {
node {
id
headline
thumbnailUrl
}
}
}
}
}
We get:
{
"data": {
"node": {
"id": "UGVyc29uOjI=",
"givenName": "Amir",
"familyName": "Schmeler",
"address": "197 Mina Gardens",
"articlesAuthored": {
"edges": [
{
"node": {
"id": "QXJ0aWNsZToy",
"headline": "Open-source object-oriented approach",
"thumbnailUrl": "http://lorempixel.com/640/480/business"
}
}
]
}
}
}
}
More Examples
You can view more examples by reviewing the source code:
- Full Person Model Example from test source
- Full GraphQL Setup Example from test source