Непонятная ошибка мангуста - PullRequest
0 голосов
/ 31 августа 2011

Я получаю следующую ошибку:

TypeError: Невозможно прочитать свойство 'name' из неопределенного в новом SchemaArray (/home/campaigns/scheduler/tests/node_modules/mongoose/lib/schema/array.js:40:22) в Function.interpretAsType (/home/campaigns/scheduler/tests/node_modules/mongoose/lib/schema.js:201:12) в Schema.path (/home/campaigns/scheduler/tests/node_modules/mongoose/lib/schema.js:162:29) в Schema.add (/home/campaigns/scheduler/tests/node_modules/mongoose/lib/schema.js:110:12) в Schema.add (/home/campaigns/scheduler/tests/node_modules/mongoose/lib/schema.js:106:14) в новой схеме (/home/campaigns/scheduler/tests/node_modules/mongoose/lib/schema.js:38:10) на объекте. (/Home/campaigns/scheduler/tests/testSchedulerModel.coffee:12:21) на объекте. (/Home/campaigns/scheduler/tests/testSchedulerModel.coffee:177:4) в Module._compile (module.js: 402: 26) в Object.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script.js:57:25)

Однако в строке 12 testSchedulerModel.coffee нет ссылки на имя. Вот как выглядит строка 12: ObjectId = Schema.ObjectId

Так как же мне понять эту ошибку?

Спасибо, Игорь

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Вздох. К сожалению, хотя думаю, что testSchedulerModel.coffee:12 будет означать "строку 12 из testSchedulerModel.coffee, на самом деле это означает" строку 12 JavaScript, с которой testSchedulerModel.coffee компилируется. Проблема в том, что в настоящее время нет способа отследить ошибки до исходного CoffeeScript (по крайней мере, не в Node).

Итак, вам нужно скомпилировать testSchedulerModel.coffee как JS и посмотреть, какая там строка 12.

Улучшаются средства отладки для CoffeeScript, но на данный момент, вероятно, лучше установить Cakefile, который компилирует ваш код в JS перед его запуском, чтобы избежать такой путаницы.

Кстати, существует открытая проблема, связанная с этими .coffee именами файлов в трассировке стека: проблема 987 .

0 голосов
/ 01 сентября 2011

Тревор: слава за чаевые!

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

AdUnitSchema = new mongoose.Schema
  venue: [
    {
      id: ObjectId,
      name: String
    }
  ],
  geotarget: [
    {
    id: ObjectId,
    name: String
    }
  ]

Но на самом деле мне пришлось создавать отдельные схемы и ссылаться на них следующим образом:

 AdUnitSchema = new mongoose.Schema
        venue:
          [VenueSchema]
        geotarget: 
          [GeotargetSchema]
...