@alterior/mongo

MongoDB connector for Alterior applications

Usage no npm install needed!

<script type="module">
  import alteriorMongo from 'https://cdn.skypack.dev/@alterior/mongo';
</script>

README

Alterior MongoDB Support

npm version Build Status Join the chat at https://gitter.im/alterior-mvc/Lobby

Use this package if you want to connect to MongoDB from your Alterior application.

Accessing MongoDB from Alterior

npm i mongodb @alterior/mongo

Now use mongoProvider to inject an instance of mongodb.Db into your application:

import { AppOptions } from '@alterior/core';
import { mongoProvider } from '@alterior/mongo';
import * as mongodb from 'mongodb';

@AppOptions({
    providers: [mongoProvider(mongodb.Db)]
})
class App { 
}

Now, you can inject mongodb.Db into your controllers:

import { Controller, Get } from '@alterior/core';
import * as mongodb from 'mongodb';

@Controller()
class SampleController {
    constructor(
        private db : mongodb.Db
    ) {
    }
    
    @Get('/stuff')
    public getStuff() {
        return this.db.collection('stuff').find().toArray();
    }
}

You can pass any token into mongoProvider, which can be used to inject multiple database connections if necessary.

Storing Sessions in MongoDB

This package also provides a connector for storing Express sessions in MongoDB using mongo-connect.

import * as mongodb from 'mongodb';
import { mongoProvider, mongoSession } from '@alterior/mongo';

@AppOptions({
    providers: [mongoProvider(mongodb.Db)]
    middleware: [mongoSession(mongodb.Db, SESSION_SECRET)]
})
export class App { }

You can then access and modify session data from your route methods. We recommend you make an interface representing your session data.


interface SessionData {
    displayName : string;
    cartTotal : number;
}

@Controller()
class SampleController {
    @Get('/cart/total') 
    public get(session : SessionData) {
        return session.cartTotal;
    } 
}