Comment écrire un modèle Mongoose dans ES6 / ES2015
Je veux écrire mon mangouste modèle dans l'ES6. Fondamentalement remplacer module.exports
et d'autres ES5 les choses dans la mesure du possible. Voici ce que j'ai.
import mongoose from 'mongoose'
class Blacklist extends mongoose.Schema {
constructor() {
super({
type: String,
ip: String,
details: String,
reason: String
})
}
}
export default mongoose.model('Blacklist', Blacklist)
Je vois cette erreur dans la console.
if (!('pluralization' in schema.options)) schema.options.pluralization = this.options.pluralization;
^
TypeError: Cannot use 'in' operator to search for 'pluralization' in undefined
source d'informationauteur Noah
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de savoir pourquoi vous êtes tentant d'utiliser ES6 classes dans ce cas.
mongoose.Schema
est un constructeur pour créer de nouveaux schémas. Lorsque vous nevous créez un nouveau schéma à l'aide que constructeur. Le constructeur est conçu de telle sorte que se comporte exactement comme
Ce que vous êtes en alternative,
n'est de créer une sous-classe de la classe de schéma, mais vous n'avez jamais fait l'instancier n'importe où
Vous devez faire
mais je ne vous le recommande vraiment. Il n'y a rien de "plus ES6y" à propos de ce que vous faites. Le code précédent est parfaitement raisonnable et est recommandé à l'API pour la Mangouste.
Pourquoi voudriez-vous le faire?
mongoose.Schema
n'est pas prévu pour être utilisé de cette façon. Ne pas utiliser l'héritage.mongoose.Schema
est un constructeur qui prend un objet en tant que premier paramètre à la fois dans l'ES5 et ES6. Pas besoin de ES6 classes ici.Donc même avec ES6 la bonne façon est:
Faire les choses de la ES6, en classe comme moyen, comme la question des états, j'ai simplement dû invoquer la classe avec
new
dans le exportéesmongoose.model
fonction.Mangouste peuvent supporter nativement es6 classes (depuis 4.7, et sans transpiler...).
Il suffit d'écrire:
Pour ceux qui trouvent cette recherche autour de la question d'origine semble assez valable pour moi. Je suis l'aide de Babel transpiling ES6+ 5. Mon custom mangouste méthodes n'ont pas de bien jouer avec mon async/await code dans mon appel de la classe. Notamment
this
étaitnull
dans mes méthodes d'instance. À l'aide de la solution proposée ici, j'ai pu arriver à cette solution qui, nous l'espérons aide les autres à la recherche autour de.