2016-02-13 2 views
2

Je codais tapuscrit dans nodejs. Quand je codais schéma mangouste, Tapuscrit compilateur me comme suit puisqu'il est raconté:Typescript - Pourquoi la propriété `methods` n'existe pas dans mongoose?

app/models/user.schema.ts(15,12): error TS2339: Property 'methods' does not exis 
t on type 'Schema'. 

je me sentais bizarre. J'avais référence doc dans la section Instance methods de guide. Il mentionne comme suit:

// assign a function to the "methods" object of our animalSchema 
animalSchema.methods.findSimilarTypes = function (cb) { 
    return this.model('Animal').find({ type: this.type }, cb); 
} 

Je pense que methods est une propriété disponible ou API. Mais pour tapuscrit, c'est faux.

Ensuite, je recherche définition. Je trouve method(name: string, fn: Function) et method(method: Object) ces propriétés mais il n'a pas methods. En bref, vous ne me répondez pas pourquoi l'auteur de la définition mongoose ne définit pas la propriété. En bref, vous ne me répondez pas pourquoi l'auteur de la définition mongoose ne définit pas la propriété. J'ai besoin d'une réponse le methods en mongoose est actuellement disponible ou non?

Répondre

1

Il n'y a pas de propriété telle que "methods" en javascript pur. C'est un spécimen de mangouste. Veuillez noter que node.js utilise en interne le même moteur JavaScript google V8 que le navigateur chrome - il n'y a donc pas de javascript pur pour node.js.

1

methods propriété existe dans mongoose, mais en utilisant mongoose méthodes/statiques la façon dont javascript dans tapuscrit provoquera une erreur. Voici quelques solutions de contournement.

solution A:

userSchema['methods'].findSimilarTypes = function (cb) { 
    return this.model('Animal').find({ type: this.type }, cb); 
} 

solution B:

userSchema.method('findSimilarTypes', function (cb) { 
    return this.model('Animal').find({ type: this.type }, cb); 
})