我有一个使用数字的模式如下。
var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.Types.ObjectId
, Mixed = Schema.Types.Mixed
, Number = Schema.Types.Number
, Date = Schema.Types.Date
var ItemSchema = new Schema({
quantity:{type:Number, required:true, min:1},
category:{type:String, required:true, enum:categoryList},
description:{type:String, required:true},
cost:{type:Number, required:true, min:0, default:0},
appraisedValue:{type:Number, min:0, default:0},
appraisedOn:Date,
purchasedOn:Date,
purchasedFrom:String,
brand:String,
dynamicFieldList:[DynamicFieldSchema]
})
exports.ItemSchema = ItemSchema
exports.Item = mongoose.model('Item', ItemSchema)
但是当我尝试运行我的应用程序时,我收到了一个TypeError:未定义类型的'quantity'。如果数量值被注释掉,这也会在'成本'处发生。
堆栈跟踪是:
C:\Users\a\Documents\Git\has-inventory.js\node_modules\mongoose\lib\schema.js:325
throw new TypeError('Undefined type at `' + path +
TypeError: Undefined type at `quantity`
Did you try nesting Schemas? You can only nest using refs or arrays.
at Function.Schema.interpretAsType (C:\Users\a\Documents\Git\has-inventory.js\node_modules\mongoose\lib\schema.js:325:11)
at Schema.path (C:\Users\a\Documents\Git\has-inventory.js\node_modules\mongoose\lib\schema.js:268:29)
at Schema.add (C:\Users\a\Documents\Git\has-inventory.js\node_modules\mongoose\lib\schema.js:200:12)
at new Schema (C:\Users\a\Documents\Git\has-inventory.js\node_modules\mongoose\lib\schema.js:69:10)
at Object.<anonymous> (C:\Users\a\Documents\Git\has-inventory.js\domain\inventory.js:34:18)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
答案 0 :(得分:6)
删除这两行:
, Number = Schema.Types.Number
, Date = Schema.Types.Date
内置的JavaScript Number
和Date
类型应该在架构定义中使用。