我收到以下错误:
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
那我该怎么理解这个错误呢?
谢谢你, 伊戈尔
答案 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]