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
