2016-12-11 7 views
0

Попытка установить простое поле ссылки в Mongoose дает мне огромные проблемы. Я получаю следующую ошибку. Насколько я могу судить, нет фактических ошибок проверки.MongooseError: Невозможно прочитать свойства «параметры» неопределенного при настройке ссылки

'contents.0.modules.0.matches.0.': 
     { MongooseError: Cannot read property 'options' of undefined 
      at ValidatorError (C:\Users\Simon\Documents\Projects\eventvods\node_modules\mongoose\lib\error\validator.js:24:11) 
      at _init (C:\Users\Simon\Documents\Projects\eventvods\node_modules\mongoose\lib\document.js:372:37) 
      ... 
      at init (C:\Users\Simon\Documents\Projects\eventvods\node_modules\mongoose\lib\document.js:348:7) 
      at model.Document.init (C:\Users\Simon\Documents\Projects\eventvods\node_modules\mongoose\lib\document.js:313:3) 
     message: 'Cannot read property \'options\' of undefined', 
     name: 'ValidatorError', 
     properties: [Object], 
     kind: 'cast', 
     path: undefined, 
     value: undefined } } } 

Mongoose схема как так

var matchSchema = new Schema({ 

    team1: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Teams' 
    }, 
    team2: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Teams' 
    }, 
    team1_2: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Teams' 
    }, 
    team2_2: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Teams' 
    }, 
    ... 
}); 
var moduleSchema = new Schema({ 
    matches: [matchSchema], 
    ... 
}); 
var sectionSchema = new Schema({ 
    modules: [moduleSchema], 
    ... 
}); 

объекта образца, который не в состоянии сохранить:

{ 
    team1: 5835a5f653d4ce23bb33ab19, 
    team2: 5835a70353d4ce23bb33ab21 
} 

ответ

0

Так что это было странно, но я смог обойти его с небольшими неудобными манипуляциями.

  1. Создание нового поля схемы того же типа и установка значения .
  2. Прохождение всех моих документов и установка исходного поля в это поле.
0

это ваше team1 определения:

team1: { 
    type: mongoose.Schema.Types.ObjectId, 
    ref: 'Teams' 
} 

и это ваше данных в монго:

team1: 5835a5f653d4ce23bb33ab19 

Как вы можете видеть, тип объекта team1 не ObjectId! это просто нормальная строка!

Монго хранит ссылки, как это:

team1: { 
    "$ref" : "Teams", 
    "$id" : ObjectId("5835a5f653d4ce23bb33ab19") 
} 

Так что либо исправить свои данные в Монго или исправить вашу схему!

+0

Боюсь, что вы на самом деле ошибаетесь. Передача в 'mongoose.mongo.ObjectId (id)', чтобы преобразовать его в id, не работает, и я также устанавливаю ссылки в этом точном методе в другом месте, - что отлично работает. Только эти две переменные не работают. –