parse-model-factory
v1.2.4
Published
A Model Factory for Parse-server
Downloads
45
Readme
Parse Model Factory
Intro
Parse Model Factory is an addon to parse-server. It provides a lot of basic queries so you can centralize all of your queries in one place.
This addon is amazing when you don't want query.find()
all over your project.
You can have clean models with just a few lines of code:
const ModelFactory = require('parse-model-factory');
const MyModel = ModelFactory.generate('MyModel');
MyModel.theQueryYouHave1000times = function() {
const query = this._query();
// all of your logic
return this._find(query, ['include1', 'include2'], 200);
}
module.exports = MyModel;
As you can see, we get the query from the model factory and we call _find
with our complex query, an array of includes and the limit.
No more query.include().include().include()
:heart:
Getting Started
Running model factory
Locally
$ npm install parse-model-factory
Creating your first model
The only thing you should do is requiring the module and call the generate
function
const ModelFactory = require('parse-model-factory');
const modelProperties = {
defaultIncludes: ['prop1', 'prop2']
};
const objectProperties = {
toStringCustom: function() {
const prop = this.get('prop');
return `Your prop is ${prop}`;
}
};
const MyModel = ModelFactory.generate('MyModel', modelProperties, objectProperties);
Now you should be able to do:
const query = MyModel._query();
query.doesNotExist('property');
MyModel._find(query, MyModel.defaultIncludes, 10)
.then(result => result.map(obj => console.log(obj.toStringCustom())))
.catch(error => console.log(error));
Object Methods index
object.customFetch()
-> Will fetch the object with the master keyobject.saveMasterKey()
-> Will save the object with the master keyobject.destroyMasterKey()
-> Will destroy the object with the master keyobject.setAcl(force = false, func, ...args)
force : if false will set the acl only when the object is new
func : method you want to set
public | private | read | write | user
const object = new TestObject();
object.setAcl(false, 'public', true, false);
// == setPublicReadAccess(true) && setPublicWriteAccess(false)
object.setAcl(false, 'private', [user], [user]);
// == setReadAccess(user) && setWriteAccess(user)
object.setAcl(false, 'read', user1, user2, ...);
// == setReadAccess(user1) && setReadAccess(user2) && setPublicWriteAccess(false)
object.setAcl(false, 'write', user1, user2, ...);
// == setWriteAccess(user1) && setWriteAccess(user2) && setPublicReadAccess(true)
object.setAcl(false, 'user', user);
// == setReadAccess(user) && setWriteAccess(user)
Queries Methods index
Model._query()
Methods with master key
Model._find(query, includes = [], limit = 5000, skip = 0)
Model._get(query, objectId, includes = [])
Model._each(query, includes = [], callback)
Model._count(query)
Model._first(query, includes = [])
Model.save(object, params = null)
Model.saveAll(objects)
Model.destroy(object)
Model.destroyAll(objects)
Methods without master key
Model._findRegular(query, includes = [], limit = 5000, skip = 0, option = {})
Model._getRegular(query, objectId, includes = [], option = {})
Model._countRegular(query, option = {})
Model._firstRegular(query, includes = [], option = {})
const query = MyModel._query();
query.doesNotExist('property');
const session = { sessionToken: req.user.getSessionToken() };
const result = await MyModel._findRegular(query, MyModel.defaultIncludes, 10, 10, session);