bap-node-microframework-mongoose
v1.0.2
Published
Wrapper mongoose plugin for bap-node-microframework.
Downloads
3
Readme
node-microframework-mongoose
Wrapper mongoose plugin for bap-node-microframework.
Installing
To install and add the dependecy to the package.json, run the following command:
npm install bap-node-microframework-mongoose --save
Configuration
To create a connection to mongodb://localhost:27017, write the following code in app/app.ts:
// app/app.ts
...
import { MongoosePlugin } from 'bap-node-microframework-mongoose';
...
import { Kernel } from "./kernel";
var kernel = new Kernel();
var App = new Application(<ApplicationOptions>{
...
}, <KernelInterface>kernel);
...
App.registerPlugin(MongoosePlugin, { "dsn": "mongodb://localhost:27017" });
...
App.start();
...
Using
Model
To create a User Mongoose model, write the following code in app/modules/user/models/user.ts:
// app/modules/user/models/user.ts
import { Container } from 'bap-node-microframework/core';
export class UserModel {
static define(mongoose) {
let userSchema = {
username: String,
email: String,
password: String,
firstname: String,
lastname: String
};
userSchema = Container.get('mongoose').Schema(userSchema);
return Container.get('mongoose').model('User', userSchema);
}
}
BaseController
If you want to use the BaseController abstract class:
import { BaseControllerMongoose } from 'bap-node-microframework-mongoose';
...
class MyClass extends BaseControllerMongoose {
...
}
ParamConverter
You can use the paramConverter decorator to get some data from the database before executing a function in a controller.
The paramConverter signature is:
ParamConverterMongoose(aName, { 'model': modelName, 'filterBy': { fieldDB: fieldParam } })
where:
- aName (String): name to use when you have to access the data in the controller function (with req.params.aName, e.g. req.params.user). Example: "user"
- modelName (String): model name to use for the request. Example: "User" (create in the Model section).
- fieldDB (String): Field name in the MongoDB instance. Example: "_id".
- fieldParam (String): Field parameter to use in the router (e.g. @Get('/users/:id')). Example: "id".
If you want to use the ParamConverter:
import { BaseControllerMongoose, ParamConverterMongoose } from 'bap-node-microframework-mongoose';
...
class UserController extends BaseControllerMongoose {
@ParamConverterMongoose('user', { 'model': 'User', 'filterBy': { '_id': 'id' } })
...
}
...
Example of a controller
The following code presents a complete example of a controller:
// app/modules/user/controllers/user.ts
import { Put, WithRouter } from 'bap-node-microframework/decorators';
import { ParamConverterMongoose, BaseControllerMongoose } from 'bap-node-microframework-mongoose';
import userForm from '../../user/forms/user';
@WithRouter()
class UserController extends BaseControllerMongoose {
@ParamConverterMongoose('user', { 'model': 'User', 'filterBy': { '_id': 'id' } })
@Put('/users/:id', { authenticated: false })
update(req, res) {
super.put(req.params.user, userForm(req), req, res);
}
}
export default UserController.router;