2017-02-01 3 views
0

Я использую , 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(); 
}); 

Что я могу сделать для того, чтобы работать?

ответ

0

мой плохой, я бросала объект в строку ...

volAddressCoords: {type: Object, 
    properties: { 
     type: { 
     type: String, 
     enum: 'Point', 
     default: 'Point' 
     }, 
     coordinates: { 
     type: [Number], 
     default: [0, 0] 
     }, 
     index: {type: String, default: '2dsphere'} 
    }} 

 Смежные вопросы

  • Нет связанных вопросов^_^