getModelsByClass ⇒ Array<SequelizeModel>
getModelsByClass(SequelizeClass
) ⇒ Array<SequelizeModel>
Returns an Array
of SequelizeModel instances that are of the passed-in SequelizeClass.
Returns: Array<Attributes>
Param | Type | Description |
---|---|---|
SequelizeClass |
Class |
A specific SequelizeClass to process. |
Module Import
import { resolveModelsByClass } from 'sequelize-relay';
About
The getModelsByClass
and resolveModelsByClass methods are very similar as they both return
an Array of Attributes objects. The difference is resolveModelsByClass
returns a promised
Attributes Array
, and the getModelsByClass
method returns the Attributes Array
immediately.
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, getModelsByClass } from 'sequelize-relay';
var User = models.User;
connect.then(db => {
console.log('connected to db!');
let usersList = getModelsByClass(User);
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));
});
Example 2
Using with Relay:
var queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
users: {
description: 'Users',
type: userConnection,
args: connectionArgs,
resolve: (root, args) =>
connectionFromArray(getModelsByClass(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