MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como definir o auxiliar de consulta personalizado no modelo mangusto com typescript?


Eu elaborei uma nova versão de @types/mongoose que suporta auxiliares de consulta. Veja esta resposta para maneiras de instalar um @types modificado pacote. Com minha versão, você poderá escrever o seguinte em models/article.ts :
import { Document, Schema, Model, model, DocumentQuery } from 'mongoose';

interface IArticle extends Document {
   name: string;
}

interface IArticleModel extends Model<IArticle, typeof articleQueryHelpers> {
   someStaticMethod(): Promise<any>;
}

const ArticleSchema = new Schema( { name: String } )

let articleQueryHelpers = {
    byName(this: DocumentQuery<any, IArticle>, name: string) {
        return this.find({ name });
    }
};
ArticleSchema.query = articleQueryHelpers;

export default model<IArticle, IArticleModel>('Article', ArticleSchema);

e então routes/article.ts vai funcionar. Se isso funcionar para você, enviarei uma solicitação de pull para o pacote original em Definitivamente Typed.