2015-04-10 5 views
5

Я написал метод для адреса пользователя в коллекции. Тем не менее, я получаю сообщение об ошибке:Объект проверки должен иметь хотя бы один оператор/метеорит mongo

When the modifier option is true, validation object must have at least one operator. 

Вот моя схема:

var Schemas = {}; 

Schemas.UserAddress = new SimpleSchema({ 

streetAddress: { 
    type: String, 
    max: 100, 
    optional: false 
}, 
city: { 
    type: String, 
    max: 50, 
    optional: false 
}, 
state: {  
    type: String, 
    regEx: /^[a-zA-Z-]{2,25}$/, 
    optional: false 
}, 
zipCode: { 
type: String, 
regEx: /^[0-9]{5}$/, 
optional: false 
} 
    }); 

Schemas.User = new SimpleSchema({ 
emails: { 
    type: [Object], 
    optional: false 
}, 
"emails.$.address": { 
    type: String, 
    regEx: SimpleSchema.RegEx.Email 
}, 
"emails.$.verified": { 
    type: Boolean 
}, 
createdAt: { 
    type: Date 
}, 
profile: { 
    type: Schemas.UserProfile, 
    optional: false 
}, 
    address: { 
    type: Schemas.UserAddress, 
    optional: false 
}, 
services: { 
    type: Object, 
    optional: true, 
    blackbox: true 
} 
}); 

Meteor.users.attachSchema(Schemas.User); 

А вот мой addAddress событие:

Template.editAddress.events({ 

    'click .addAddress': function(e, tmpl) { 
e.preventDefault(); 
var currentUserId = this._id; 
var addressDetails = { 
    address: { 
    streetAddress: $('#streetAddress').val(), 
    city: $('#city').val(), 
    state: $('#state').val(), 
    zipCode: $('#zipCode').val() 
    }, 
}; 
console.log(addressDetails); 
Meteor.call('addNewAddress', addressDetails, currentUserId, function(error) { 
    if (error) { 
    alert(error.reason); 
    } else { 
    console.log('success!'); 
    Router.go('Admin'); 
    } 
}); 
}, 
}); 

Вот мой метод addAddress:

Meteor.methods({ 
'addNewAddress': function(addressDetails, currUserId) { 

    var currentUserId = currUserId; 

    Meteor.users.update(currentUserId, {$addToSet: 
     {'address.streetAddress': addressDetails.streetAddress, 
     'address.city': addressDetails.city, 
     'address.state': addressDetails.state, 
     'address.zipCode': addressDetails.zipCode 
     } 
    }); 
} 
}); 

Примечание - когда я сотрудничаю nsole.log (addressDetails), он точно печатает данные адреса.

Может кто-нибудь помочь? Заранее спасибо!!

ответ

2

Да, это ошибка вроде посылает вас в неправильном направлении. Независимо от того, вы используете $addToSet на объекте. Сделайте это:

Meteor.users.update(currentUserId, {$set: addressDetails.address} 
2

Попробуйте следующий код:

Meteor.users.update(
    {$currUserId}, 
    {$addToSet: 
    {'address.streetAddress': addressDetails.streetAddress, 
    'address.city': addressDetails.city, 
    'address.state': addressDetails.state, 
    'address.zipCode': addressDetails.zipCode 
    } 
}); 
+0

hi - я все равно получаю то же самое «Когда опция модификатора истинна, объект проверки должен иметь хотя бы один оператор». error:/Я думаю, что мой синтаксис прекрасен. Там может быть что-то не так со схемой? –