不明确的猫鼬错误

时间:2011-08-31 17:01:07

标签: coffeescript mongoose

我收到以下错误:

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)

但是,在testSchedulerModel.coffee的第12行,没有对'name'的引用。这是第12行的样子: ObjectId = Schema.ObjectId

那我该怎么理解这个错误呢?

谢谢你, 伊戈尔

2 个答案:

答案 0 :(得分:2)

叹息。不幸的是,虽然你认为 testSchedulerModel.coffee:12意味着“{1}}的第12行,但它实际上意味着”编译testSchedulerModel.coffee的JavaScript的第12行。问题是目前无法将错误追溯到原始的CoffeeScript(至少不在Node下)。

所以,你必须将testSchedulerModel.coffee编译为JS,看看第12行是什么。

更好的CoffeeScript调试工具即将推出,但就目前而言,最好设置一个Cakefile,在运行之前将代码编译为JS,以避免混淆。

顺便说一下,堆栈跟踪中的testSchedulerModel.coffee个文件名存在一个未解决的问题:issue 987

答案 1 :(得分:0)

特雷弗:小费的赞誉!

我解决了我的问题。事实证明,在Mongoose中定义我的模式时,我不能在数组中包含对象。我是这样做的:

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

但实际上,我必须创建单独的模式,并像这样引用它们:

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