2016-11-15 3 views
0

Ich habe ein Schema, in dem ich eine Beziehung zwischen zwei Benutzern speichern. Jede dieser Beziehungen hat benutzerspezifische Daten. Ich bin neugierig, ob es möglich ist, etwas entlang der Linien von, dies zu tun:Dynamisches Schema Feld in Mongoose

{ 
    users: Array, 
    users[0]: { 
     typing: Boolean, 
     last_checked: Date 
    }, 
    users[1]: { 
     typing: Boolean, 
     last_checked: Date 
    } 
} 

Statt der die Informationen gespeichert wie so:

{ 
    users: Array, 
    data: Array 
} 

und tun Logik auf dem Server die finden Index, etc. Wie so:

entry.data[entry.users.indexOf(id)].typing 

im Grunde nur versuchen, eine anständige Art und Weise zu finden Benutzer basierte Informationen für jeden Benutzer in der 2-Personen-Beziehung zu speichern. Die idealste Situation für mich wäre, die Benutzer _id als Schlüssel zu verwenden, aber können Sie das mit Mongoose tun?

Antwort

0

Ich schlage vor, Sie erstellen ein Array, das die Daten des Benutzers enthält. Hier habe ich die Größe des Arrays auf zwei Beziehungen beschränkt.

DataSchema = { 
     typing: Boolean, 
     last_checked: Date, 
    } 

    UserSchema = { 
     relationship: { 
      type: [DataSchema], 
      validate: [ 
      () => val.length <= 2, 
      '{PATH} exceeds the limit of 2 relationship', 
      ], 
     } 
    } 

Zugriff auf die Daten:

// User 1 data 
entry.relationship[0] 

// User 2 data 
entry.relationship[1] 

// User 1 _id you can use 
entry.relationship[0]._id