mangouste: Comment insérer un sous-document unique - pas un tableau
Dans la mangouste, vous êtes en mesure de déclarer un schéma pour un sous-document, comme par:
var childSchema = new mongoose.Schema({ name: String, age: String });
var parentSchema = new mongoose.Schema({
children: [childSchema]
});
var Parent = mongoose.model('Parent', parentSchema);
var Child = mongoose.model('Child', childSchema);
var child = new Child({name:'Joe', age: '21'});
var parent = new Parent();
parent.children = [child];
parent.save(function(err, saved) {
if(err) console.error(err);
});
Semble le sous-document de type doit être un tableau. J'ai besoin d'être en mesure de sauver le sous-document comme une instance unique, pas un tableau, c'est à dire:
var childSchema = new mongoose.Schema({ name: String, age: String });
var parentSchema = new mongoose.Schema({
children: childSchema //not an array
});
var Parent = mongoose.model('Parent', parentSchema);
var Child = mongoose.model('Child', childSchema);
var child = new Child({name:'Joe', age: '21'});
var parent = new Parent();
parent.children = child; //not an array
parent.save(function(err, saved) {
if(err) console.error(err);
});
Donc pas un tableau ou une ref, juste une seule instance du sous-document. Est-ce possible? Si non dois-je utiliser:
var childInstance = child.toObject();
OriginalL'auteur Chev | 2014-05-13
Vous devez vous connecter pour publier un commentaire.
Parfois, il est difficile de voir l'évidence. Vous n'avez pas besoin d'un autre schéma pour réaliser ce que vous voulez. Vous pouvez simplement définir votre sous-document à l'intérieur de votre parent schéma comme ceci:
OriginalL'auteur salihcenap
OUPS! Edit:
J'ai totalement mal interprété votre question.. Si vous voulez stocker un unique - ci? Alors pourquoi vous avez dû le bien nommé
children
..Vous pouvez utiliser:
De cette façon, la mangouste convertit le document en un simple objet et le stocke. Mais je ne vois pas l'utilisation de le faire de cette façon? Il n'a pas l'avantage d'un Schéma et est utilisé par défaut de l'objet. Ne pas placer dans un tableau aussi vous empêche d'y ajouter plus d'éléments imbriqués.
Vieux:
Au lieu d'injecter de l'enfant du schéma directement à la société mère de schéma, vous devez le lien de leur premier (et vous souhaitez les stocker séparément droit?).
Nous obtenons donc deux collections:
parents
etchildren
(=Parent
&&Child
). Tous les documents de la collectionchildren
sont liés à unparents
collection. Et unparent
document a zéro, un ou plusieurschildren
documents liés.De cette façon, vous conservez la possibilité de modifier le schéma (comme joindre
methods
oustatics
) et conserver les documents soigneusement séparés ET vous pouvez l'avoir "l'enfant" de l'effet que tu voulais:Ce sera le retour de la suivante:
Vous pouvez également faire une fonction statique de la collection
parents
:addChild(child, callback)
, de sorte que le code est plus propre (javaísh style).pseudo-code:
Espérons que cela aide et bonne continuation (:
OriginalL'auteur Kai
si la relation des 2 collections est de 1 à 1.
vous pouvez utiliser "ref"
source: http://mongoosejs.com/docs/populate.html
OriginalL'auteur X Digital