2016-03-14 3 views
0

У меня есть userTasteSchema, со словарным полем favorites состоит из favoriteSchema объектов. Когда я сохраняю или обновляю userTaste, я хочу проверить, что элементы словаря действительны favorite объектов. Возможно ли это? спасибоПодтвердить subDocuments в словаре в Mongoose

var userTasteSchema = new Schema(
     { 
      favorites  : {type: { /* dictionary of favorites */ }, default:{} } 
     }); 

    var favoriteSchema = new Schema(
     { 
     name : {type:{String}} 
     }); 

ответ

0

Необходимо изменить декларацию модели. Согласно docs ваш код должен выглядеть следующим образом:

var userTasteSchema = new Schema(
    { 
     favorites  : [ favoriteSchema ] 
    }); 

var favoriteSchema = new Schema(
    { 
    name : {type:String} 
    }); 

И это довольно много его. Когда вы сохраняете свой родительский документ, UserTaste, проверки ваших детей также запускаются. Вот reference

Проверка асинхронно рекурсивна; при вызове подтверждения модели # выполняется также проверка поддокумента. Если возникла ошибка, ваш Образец возврата номера модели # получает

+0

, но таким образом я создаю массив, а не словарь ... не так ли? – DeLac

+0

, если вы хотите, чтобы отношения между несколькими документами были связаны друг с другом, вы должны создать массив, так или иначе, если вы хотите объект, вы можете просто передать объект, схему детей без квадратных скобок (из версии 4.2.0) –