2015-10-28 1 views
0

У меня есть 2 moongose ​​схема:Mongoose/MongoDb, как проверить массив идентификаторов от другой модели

var Schema2 = new Schema({ 
    creator : { type: String, ref: 'User'}, 
    schema_name : [{ type: String}], 
}); 

var Schema1 = new Schema({ 
    creator : { type: String, ref: 'User'}, 
    schema_ref : [{ type: String, ref: 'Schema2' }], 
}); 

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

Поскольку SCHEMA1 элементы добавляют форму клиента и поэтому я должен проверить, что элементы schema_ref принадлежат же пользователя, что отправить форму

+0

Посмотрите эту проверку мангуста: http://mongoosejs.com/docs/validation.html – Skywalker

ответ

0

Вы можете попробовать либо функции валидатор, или просто «сохранить» промежуточный слой:

Schema1.pre('save', function(next) { 
    let owner; 
    for (let entry in this.schema_ref) { 
     if (!owner) { 
      owner = entry; 
     } else { 
      if (entry !== owner) { 
       return next(new Error("owner mismatch"); 
      } 
     } 
    } 
}); 

Кроме того, ваша схема не может работать, как вы ожидаете, это выглядит, как вы на самом деле нужно:

schema_ref: [{ 
    type: {type: String}, 
    ref: "User" 
}] 

Кроме того, принять посмотрите на плагин id-validator или какой-либо подобный ему - в дополнение к вашей проверке проверьте также, что все свойства ref-type, подобные этому, действительно существуют в другой коллекции (Пользователи).

Смежные вопросы