0.1.1 • Published 9 years ago

mongoose-user-resolver-plugin v0.1.1

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

Mongoose-User-Resolver-Plugin

Automatically resolves the owning user of every model.

Installation

npm install mongoose-user-resolver-plugin

Usage

The plugin is configured by using the plugin function like any other mongoose plugin.

Assume you have a model project with a name and a owning user:

var ProjectSchema = mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    user: {
        type: mongoose.Schema.ObjectId,
        ref: 'user',
        required: true
    }
});

The resolver-plugin would then be configured like this:

ProjectSchema.plugin(require('mongoose-user-resolver-plugin'), {path: 'user', stop: true});

The stop attribute indicates that the provided id is the userId, so that the plugin would not try to retrieve the referenced model as it is unnecessary here.

Calling getUserId on a project instance would then resolve to the path user. The clue is that this does also work on instances that reference this project, for example:

Assume we have another model file:

var FileSchema = mongoose.Schema({
    basename: {
        required: true,
        type: String
    },
    project: {
        required: true,
        type: mongoose.Schema.ObjectId,
        ref: 'project'
    }
});
FileSchema.plugin(require('mongoose-user-resolver-plugin'), {path: 'project'});

This model references the above project model.

Calling getUserId on a file instance returns the userId that is referenced from the referenced project! With this technique you can easily build authentication and verify-algorithms that are independent from the concrete model.

Code-Quality

Current Jenkins report for this project:

  • BuildStatus
  • Test
  • LastBuild
  • CodeCoverageInJenkins