MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment définir un assistant de requête personnalisé dans le modèle de mangouste avec du texte dactylographié ?

J'ai rédigé une nouvelle version de @types/mongoose qui prend en charge les assistants de requête. Voir cette réponse pour savoir comment installer un @types modifié forfait. Avec ma version, vous devriez pouvoir écrire ce qui suit dans 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);

puis routes/article.ts marchera. Si cela fonctionne pour vous, je soumettrai une demande d'extraction au package d'origine sur DefinitelyTyped.