2016-10-15 3 views
0

У меня есть схема ниже, которая позволяет мне создать пользователя с значком «1234567» для существующего приложения. Я ожидал получить ошибку проверки b/c проверки максимальной длины.Объект массива массива Mongoose maxlength не работает

Есть что-то не так с моей схемой?

module.exports = function(db) { 
    var mongoose = require('mongoose'); 

    var appSchema = mongoose.Schema({ 
     name: { 
      type: String, 
      required: true, 
      unique: true, 
     }, 
     settings: mongoose.Schema.Types.Mixed, 
     user: [{ 
      badge: { 
      type: String, 
      minlength: 5, 
      maxlength: 5 
      } 
     }] 
    }); 

    // Export the schema for the app to use 
    return db.model('apps', appSchema); 
} 

Я пытаюсь использовать

apps.findByIdAndUpdate(req.params.id, {$push: {user: req.body.user}}, {runValidators: true},callback()); 

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

ответ

0

Как с документов, mongoose requires an Schema to validate nested objects.

так что ваша схема должна быть определена как таковая.

Можете ли вы попробовать использовать следующее определение?

var userSchema = mongoose.Schema({ 
    badge: { 
     type: String, 
     minlength: 5, 
     maxlength: 5 
    } 
}); 

var appSchema = mongoose.Schema({ 
    name: { 
     type: String, 
     required: true, 
     unique: true, 
    }, 
    settings: mongoose.Schema.Types.Mixed, 
    user: [userSchema] 
}); 
+0

Все еще не работает. Вот как я пытаюсь вставить запись пользователя в существующее приложение: 'apps.findByIdAndUpdate (req.params.id, {$ push: {user: req.body.user}}, {runValidators: true}, callback()); ' – Catfish