resolveModelsByClass ⇒ Array<SequelizeModel>
resolveModelsByClass(SequelizeClass
) ⇒ Promise<Array<SequelizeModel>>
Returns a promised Array
of SequelizeModel instances by SequelizeClass.
Returns: Promise
Param | Type | Description |
---|---|---|
SequelizeClass |
Class |
A specific SequelizeClass to process. |
Module Import
import { resolveModelsByClass } from 'sequelize-relay';
About
The resolveModelsByClass
and getModelsByClass methods are very similar as they both return
an Array of Attributes objects. The difference is getModelsByClass
returns the Attributes Array
immediately, whereas
resolveModelsByClass
returns only the promised Attributes Array
..
Examples
For more information about how sequelize models work, click here.
Example 1
Consider the following sequelize script:
export var User = sequelize.define('user', {
firstName: Sequelize.STRING,
lastName: Sequelize.STRING
});
A simple db connection export:
export const models = require('./models/index');
export const connect = () => {
return new Promise((resolve, reject) => {
try {
models.sequelize.sync().then(() => {
resolve(models);
});
} catch (error) {
reject(error);
}
});
};
Now let's pretend we created a few different Users and we wanted to retrieve a list, but only get their attributes.
import { models, connect } from 'myDatabase';
import { getArrayData, resolveModelsByClass } from 'sequelize-relay';
var User = models.User;
connect.then(db => {
console.log('connected to db!');
resolveModelsByClass(User).then((usersList) => {
console.log('The userlist has been collected', userList);
console.log('Just the user props', getArrayData(userList));
console.log('Just user props and methods', getArrayData(userList, true));
}).catch(err => console.error(err));
});
Example 2
Using with Relay:
var queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
users: {
description: 'Users',
type: userConnection,
args: connectionArgs,
resolve: (root, args) =>
connectionFromPromisedArray(resolveModelsByClass(User), args)
},
node: nodeField
})
});
For more information about connectionArgs
and nodeField
, click here.
Adds the appropriate connections, edges
, cursor
, etc...
So now we can query our users table the relay-way like so:
users(first: 4) {
pageInfo {
startCursor
endCursor
}
edges {
id
firstName
lastName
}
}
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