// utils/crudProvider.ts // 根据自己的需要增加 import { FilterQuery, UpdateQuery, DocumentDefinition, QueryOptions, Model, InsertManyOptions, } from 'mongoose' class BaseCrudProviderCls { private DBModel: Model constructor(DBModel: Model) { this.DBModel = DBModel } async create(input: DocumentDefinition) { const data = await this.DBModel.create(input) return data.toJSON() } async update( query: FilterQuery, update: UpdateQuery, options?: QueryOptions ) { return this.DBModel.updateOne(query, update, options) } async find( query: FilterQuery, projection?: any, options?: QueryOptions ) { const result = await this.DBModel.find(query, projection, options) return result && result.map((d) => d.toJSON()) } } const BaseCrudProvider = function (DBModel: Model) { const CRUD = new BaseCrudProviderCls(DBModel) return { create: CRUD.create.bind(CRUD), update: CRUD.update.bind(CRUD), find: CRUD.find.bind(CRUD), } } export { BaseCrudProvider }