我正在使用mongoose测试几个模式,并且我在子模式上两次得到相同的错误。
这是我的模特:
const OrderSchema = new Schema({
email: {
type: String,
required: true,
validate: isEmail
},
order_code: {
type: String,
unique: true
},
status: {
type: Number,
required: true
},
products: [{
product_id: {
type: Schema.Types.ObjectId,
rel: 'Product',
required: true
},
quantity: {
type: Number,
required: true
}
}]
})
const Order = mongoose.model('Order', OrderSchema)
module.exports = Order
这是我对产品数组中数量错误的测试:
test('Should be invalid if malformed product', () => {
const malformed = getValidOrder() // <- This just returns a valid order object
malformed.products[0].quantity = 'whatup' // <- Setting up a wrong quantity
const m = new Order( malformed )
const v = m.validateSync()
expect(howManyKeys(v.errors)).toBe(1) // <- here the test fails since there are two errors instead of one
})
我得到了这两个错误:products.0.quantity
和products.0.products.0.quantity
,正如您所看到的那样,第二个错误只是一个非常奇怪的模式。
这是子模式的常见猫鼬模式还是Schema出了问题? 我知道子文档中的错误会通过阅读文档传递给父模式。