$ npm i @scalio-oss/nest-couchbase couchbase
@scalio-oss/nest-couchbase
uses couchbase as a data provider and the Repository
pattern to handle all items (documents) related operations.
First, let's create an Entity
:
import { Entity } from '@scalio-oss/nest-couchbase';
@Entity('cats')
export class Cat {
name: string;
}
Where cats
is the Couchbase bucket name (optional).
Then, we need to import CouchbaseModule
in our root AppModule
:
import { Module } from '@nestjs/common';
import { CouchbaseModule } from '@scalio-oss/nest-couchbase';
@Module({
imports: [
CouchbaseModule.forRoot({
url: 'couchbase://127.0.0.1',
username: 'couchbase',
password: 'couchbase',
defaultBucket: {
name: 'test',
password: 'password',
},
buckets: [
{
name: 'another_bucket',
password: 'another_password',
},
],
}),
],
})
export class AppModule {}
In our CatsModule
we need to initiate repository for our Cat
entity:
import { Module } from '@nestjs/common';
import { CouchbaseModule } from '@scalio-oss/nest-couchbase';
import { CatsService } from './cats.service';
import { CatsController } from './cats.controller';
import { Cat } from './cat.entity';
@Module({
imports: [CouchbaseModule.forFeature([Cat])],
providers: [CatsService],
controllers: [CatsController],
})
export class CatsModule {}
And here is the usage of the repository in the service:
import { Injectable } from '@nestjs/common';
import { InjectRepository, Repository } from '@scalio-oss/nest-couchbase';
import { Cat } from './cat.entity';
@Injectable()
export class CatsService {
constructor(
@InjectRepository(Cat)
private readonly catsRepository: Repository<Cat>,
) {}
findOne(id: string): Promise<Cat> {
return this.catsRepository.get(id);
}
}
Created by @zMotivat0r @ Scalio