2016-11-15 4 views
0

У меня есть схема, в которой я храню отношения между двумя пользователями. Каждое из этих отношений имеет пользовательские данные. Я интересно, если это возможно, чтобы сделать что-то вдоль линий ЭТА:Динамическое поле схемы в Mongoose

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

Вместо того, чтобы информация, сохраненная как так:

{ 
    users: Array, 
    data: Array 
} 

и делает логику на сервере, чтобы найти индекс и т.д. Как так:

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

в основном просто пытается найти достойный способ хранения информации на основе для каждого пользователя, в связи с 2-человека. Самая идеальная ситуация для меня заключалась бы в том, чтобы использовать пользователей _id в качестве ключа, но можете ли вы сделать это с помощью Mongoose?

ответ

0

Я предлагаю вам создать массив, который будет содержать данные пользователя. Здесь я сдерживал размер массива до двух отношений.

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

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

Доступ к данным:

// User 1 data 
entry.relationship[0] 

// User 2 data 
entry.relationship[1] 

// User 1 _id you can use 
entry.relationship[0]._id 
Смежные вопросы