# MongooseService

`class` in `plugin-mongoose` · v0.3.0

<https://docs.seedcord.org/packages/plugin-mongoose/0.3.0/classes/mongoose-service>

Base class for MongoDB service layers

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

```ts
abstract class MongooseService<
    Doc extends MongooseDocument = MongooseDocument
>
```

## Examples

```ts
\@RegisterMongooseService('users')
export class Users extends MongooseService<IUser> {
  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
MongooseService(
    db: Mongoose,
    core: CoreBase,
    model: mongoose.Model<Doc>
)
```

Constructs a new instance of the `MongooseService` class

## Properties

### core

```ts
protected readonly core: CoreBase
```

### db

```ts
protected readonly db: Mongoose
```

### model

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