Mangouste, CastError: Fonte de Matrice a échoué de valeur lorsque vous essayez d'enregistrer un modèle qui contient un modèle.
Je suis en train de créer le modèle de ma base de données mongodb à l'aide de la mangouste. C'est ce que je suis en train de faire:
var Class = mongoose.model('Class', {className: String, marks: [{type: Number}], grades: [{type: Number}]});
var User = mongoose.model('User', {email: String, classes: [Class] });
//Lets create a new user
var class1 = new Class({className: 'aaa', marks: [72, 88, 63], grades: [30, 40, 30]});
var user1 = new User({email: '[email protected]', classes: [class1]});
Économie class1
semble fonctionner ok mais lorsque je vérifie mongodb, c'est affiché: { "_id" : ObjectId("someId"), "className" : "TEST1234", "grades" : [ 30, 40, 30 ], "marks" : [ 72, 88, 63 ], "__v" : 0 }
Qu'est-ce que "__v : 0"
?
Économiser de l'utilisateur n'est pas réussi du tout, c'est l'erreur suivante: ValidationError: CastError: Cast to Array failed for value "{ marks: [ 72, 88, 63 ],
grades: [ 30, 40, 30 ],
_id: someId,
className: 'TEST1234' }" at path "classes"
Exactement ce que fait l'erreur de dire? Pourquoi est-il de la coulée rien à un tableau? Ne devrait pas classes: [Class]
être un tableau de type class
?
Vous devez vous connecter pour publier un commentaire.
Homme, j'ai eu un problème similaire, avec la création d'un Schéma comme ceci:
Mon erreur est que je suis à l'aide de "type" comme un nom de champ et c'est mot réservé dans mangouste.
Je viens de changer:
à
et qui fonctionne.
voir: https://github.com/Automattic/mongoose/issues/1760
Définir explicitement le type de règle sur une propriété appelée type est autorisé et ne va pas faire une erreur. comme ceci:
Essayez de changer la définition de la classe de :
Cela est nécessaire, car la mangouste n'est pas en mesure d'analyser l'objet relatif au schéma. Maintenant, lorsque vous créez un nouveau Schéma pour la classe interne de l'objet et de le renvoyer dans les principaux userSchema mangouste devrait être en mesure d'analyser votre objet.
Votre définition du modèle est incorrect, vous devez fixer comme ci-dessous.
Ensuite, vous pouvez obtenir des données extraites à l'aide avec
populate()
comme ceTypeError: Invalid value for schema path 'type'
sur la ligne oùvar User = ...
Ce qui me manque? J'ai décommenté le schéma de la ligne et j'ai aussi la Catégorie définie ci-dessus.Par défaut, si vous avez un objet avec la clé 'type' dans votre schéma, la mangouste s'interpréter comme une déclaration de type.
La modification de la typeKey:
Lien: http://mongoosejs.com/docs/guide.html#typeKey
Juste pour mettre à Jour
Maintenant Mangouste prend en charge les sous-documents, qui sont documentées de façon à incorporer les tableaux,
Sources
http://mongoosejs.com/docs/schematypes.html