Проблема заключается в поле: сокращение TYPE, которое не следует смешивать с полями опций, как требуется.Вместо этого я думаю, что вы можете попытаться не использовать сокращения в родительских полях, например:
{
name: {
type: {
first: String,
last: String
},
required: true
}
или даже более явно:
{
name: {
type: {
first: { type: String},
last: { type: String}
},
required: true
}