Vyhledávání na webu

node.js - Jak používat plugin `mongoose-delete` s NestJs a TypeScriptem?


Používám Mongoose v knihovně NestJs a chci použít plugin mongoose-delete pro všechny mé schémata.

Ale nevím, jak to použít s nestJS a TypeScriptem.

Nejprve jsem nainstaloval obě knihovny mongoose-delete a @Types/mongoose-delete, ale pro tento plugin neexistuje dokumentace v TypeScriptu. Toto je doporučená metoda pro přidání pluginu do Nest:

    MongooseModule.forRoot(MONGO_URI, {
      connectionFactory: connection => {
        connection.plugin(require('mongoose-delete'));
        return connection;
      },
    }),

A absolutně to generuje chybu esLint:

Příkaz require není součástí příkazu import.eslint

A nemohu použít funkci delete. Není definována v mongoose.Document

  export type ChannelDocument = Channel & Document;

  constructor(
    @InjectModel(Channel.name) private _channelModel: Model<ChannelDocument>,
  ) {}

  async delete(id: string) {
    this._channelModel.delete({ id });
    // This is undefined -^
  }

Odpověď č. 1

použijte plugin pro měkké mazání => https://www.npmjs.com/package/soft-delete-mongoose-plugin

Jednoduchý a uživatelsky přívětivý plugin pro měkké mazání pro Mongoose, implementace pomocí TS. Do modelu Mongoose byly přidány a přepsány metody pro realizaci logiky měkkého mazání.

můžete to použít jako globální plugin:

import { plugin } from 'mongoose';
import { SoftDelete } from 'soft-delete-mongoose-plugin';

// define soft delete field name
const IS_DELETED_FIELD = 'isDeleted';
const DELETED_AT_FIELD = 'deletedAt';

// Use soft delete plugin
plugin(
  new SoftDelete({
    isDeletedField: IS_DELETED_FIELD,
    deletedAtField: DELETED_AT_FIELD,
  }).getPlugin(),
);

// other code
// ... 

Odpověď č. 2

Zkuste restartovat své IDE (vscode, pokud ho používáte) po instalaci tohoto balíčku: @types/mongoose-delete