# MongoService

`class` in `plugins` · v0.6.1

<https://docs.seedcord.org/packages/plugins/0.6.1/classes/mongo-service>

Base class for MongoDB service layers

Provides typed access to MongoDB collections through Mongoose models. Services are automatically registered with the Mongo plugin when instantiated.

```ts
abstract class MongoService<Doc extends MongoDocument = MongoDocument>
```

## Examples

```ts
\@RegisterMongoService('users')
export class Users extends MongoService<IUser> {
  \@RegisterMongoModel('users')
  public static schema = new mongoose.Schema<IUser>({
    username: { type: String, required: true, unique: true }
  });

  // Custom methods here
  public async findByUsername(username: string) {
    return this.model.findOne({ username });
  }
}
```

## Constructors

### constructor

```ts
MongoService(db: Mongo, core: Core)
```

Constructs a new instance of the `MongoService` class

## Properties

### core

```ts
protected readonly core: Core
```

### db

```ts
protected readonly db: Mongo
```

### model

```ts
public readonly model: mongoose.Model<Doc>
```
