J'utilise mongoose et j'ai deux modèles: Item et Hashtag.
Le modèle Hashtag ne doit contenir que le nom et le modèle d'élément doit contenir une liste de hashtags (représentés par des identifiants).
C'est ce que je l'ai fait:mongoose relation entre les modèles
var ItemSchema = new Schema({
hashtags: [ { type: Schema.ObjectId, 'default': null, ref: 'Hashtag' } ],
});
var HashtagSchema = new Schema({
name: { type: String, 'default': '', trim: true },
items: [{ type: Schema.ObjectId, ref: 'Page' }]
});
Voici comment je tente de créer un élément:
var item = new Item({
hashtags: ['a', 'b', 'c']
});
item.save(function (err, item) {
if (err) return res.json({ error: err });
res.json(item);
});
Malheureusement je reçois cette erreur:
CastError: Cast to ObjectId failed for value "a,b,c" at path "hashtags"
Comment puis-je résoudre ceci?
Est-il possible de lier les inserts de hashtags au modèle? Une sorte de contrainte? – Naor
Oui, vous pouvez utiliser [subdocuments] (http://mongoosejs.com/docs/subdocs.html) si les hashtags peuvent appartenir à un seul élément. –
Plus tard, je veux être en mesure de montrer tous les hashtags. Est-il possible d'ajouter quelque chose comme "before create" qui crée des hashtags si nécessaire et convertit les noms en ids? – Naor