2016-09-11 5 views
0

Ich bin sehr neu in MongoDB und verwende Mongoose.Speichern von Eins-zu-viele-Beziehungen in Mongoose beider Seiten

Ich habe zwei Modelle: users und recipes.

User:

recipes: [{ 
    type: Schema.Types.ObjectId, 
    ref: 'recipes' 
}], 

Recipe:

_creator: { 
    type: Schema.Types.ObjectId, 
    ref: 'User', 
    childPath: "recipes" 
}, 

Wenn ich versuche, ein Rezept zu speichern und ich zuweisen den Benutzer zu einem Rezept:

var recipe = new models.Recipe({ 
     title: req.body.title, 
     slug: req.body.slug, 
     _creator: user._id 
    }); 

    recipe.save(); 

Das Rezept gespeichert wird nur gut (obwohl ich Rezept nicht tun kann ._creator.name, um den Benutzernamen aus dem Rezept zu erhalten). Aber wenn ich versuche, die Benutzerdetails zu erhalten, ist das recipes Array leer. Ich würde erwarten, dass es mit der neu erstellten Rezeptreferenz gefüllt wurde. Warum ist es nicht?

+0

_I nicht in der Lage ist 'zu tun recipe._creator.name'_ Sie in der Lage sein sollten, ohnehin NoSQL-Datenbanken verwenden Beziehungen nicht, es ist eher ein verschachtelten Dokumente, Sie auf jeden Fall habe bessere Möglichkeit, Modelle zu schreiben –

+0

Ich habe meine Modelle auf die gleiche Weise eingerichtet, wie es auf dieser Mungo-Seite beschrieben wird http://mongoosejs.com/docs/populate.html aber ich bin nicht ganz dabei, wie man sie auf eine Art und Weise speichert ich kann "Beziehungen" Zugang von beiden Seiten –

Antwort

0

Wenn ich richtig verstehe, hat ein Schöpfer viele Rezepte. Recht ? in diesem Fall sollte Ihr Schöpfer sollte Rezepte Referenz haben einen Verweis auf den Schöpfer das ist es.

wenn man genau in Rezepte prüfen Sie auf Rezepte eine ref tun sich

{ recipes: [{ 
    type: Schema.Types.ObjectId, 
    ref: 'recipes' 
}], 

} 

stattdessen Sie

{ 
    { recipes: [{ 
     type: Schema.Types.ObjectId, 
     ref: 'user' 
    }], 
} 

warum in Ihrem Benutzermodell

tun sollten, haben Sie einen Verweis auf Benutzer selbst? das scheint nicht richtig zu sein.

Scheck für ein Beispiel i auf Mongodb and Express geschrieben

+0

Danke für die Antwort, aber Ihr Beispiel: 'var personSchema = Schema ({ _id: Number, name: String, Alter : Nummer, stories: [{type: Schema.Types.ObjectId, ref: 'Story'}] }); ' ist genau wie meins, es ist nur, dass anstelle von Geschichten, habe ich Rezepte, die auf das Rezept Schema :) –

+0

speichern Sie das Benutzerobjekt vor dem Speichern des Rezepts? –

Verwandte Themen