Я использую , mongo v3.4.1
, node v6.9.1
Монго 2dsphere Cast на объект не удались по значению "[]"
У меня есть эта эта схема:
var UserSchema = new Schema({
volAddressCoords: { 'type': {type: String, default: "Point"},
coordinates: { type: [Number],
default: [37.9800927,23.73151580]},
index: {type: String, default: '2dsphere'}}
(...)
})
Пользователь проверяет флажок, подаст форме, и если оно ложно это req.body:
{ volAddress: null,
volAddressCoords: [],
comRange: null,
isVolunteer: null }
Это ошибка генерируется, когда ложь (Все поля пусты): (все ошибки усечены для удобства)
{ ValidationError: User validation failed
errors:
{ volAddressCoords:
{ CastError: Cast to Object failed for value "[]" at path "volAddressCoords"
message: 'Cast to Object failed for value "[]" at path "volAddressCoords"',
name: 'CastError',
stringValue: '"[]"',
kind: 'Object',
value: [],
path: 'volAddressCoords',
reason: undefined },
'volAddressCoords.type':
{ ValidatorError: `,` is not a valid enum value for path `volAddressCoords.type`.
message: '`,` is not a valid enum value for path `volAddressCoords.type`.',
name: 'ValidatorError',
properties: [Object],
kind: 'enum',
path: 'volAddressCoords.type',
value: [Object] } },
message: 'User validation failed',
name: 'ValidationError' }
Тела, когда верно:
{ volAddress: '2307 Princes Highway, Heywood, Βικτώρια, Αυστραλία',
volAddressCoords: [ 141.61755859999994, -38.1103413 ],
comRange: 4,
isVolunteer: true }
Ошибка при Флажке верно:
{ ValidationError: User validation failed
errors:
{ volAddressCoords:
{ CastError: Cast to Object failed for value "[ 141.61755859999994, -38.1103413 ]" at path "volAddressCoords"
message: 'Cast to Object failed for value "[ 141.61755859999994, -38.1103413 ]" at path "volAddressCoords"',
name: 'CastError',
stringValue: '"[ 141.61755859999994, -38.1103413 ]"',
kind: 'Object',
value: [Object],
path: 'volAddressCoords',
reason: undefined },
'volAddressCoords.type':
{ ValidatorError: `,` is not a valid enum value for path `volAddressCoords.type`.
message: '`,` is not a valid enum value for path `volAddressCoords.type`.',
name: 'ValidatorError',
properties: [Object],
kind: 'enum',
path: 'volAddressCoords.type',
value: [Object] } },
message: 'User validation failed',
name: 'ValidationError' }
Я также пробовал этот код, как упоминалось в другом вопросе SO Does applying a 2dsphere index on a mongoose schema force the location field to be required? но та же ошибка:
UserSchema.pre('patch', function (next) {
if (this.isNew && Array.isArray(this.volAddressCoords) && 0 === this.volAddressCoords.length) {
this.volAddressCoords = undefined;
}
next();
});
Что я могу сделать для того, чтобы работать?