2015-04-10 15 views
5

Napisałem metodę do adresu użytkownika do kolekcji. Jednak wciąż otrzymuję błąd:Obiekt walidacji musi mieć co najmniej jednego operatora/meteor mongo

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

Oto mój schemat:

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); 

I tu jest moje wydarzenie 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'); 
    } 
}); 
}, 
}); 

Oto moja metoda 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 
     } 
    }); 
} 
}); 

Uwaga - kiedy robię nsole.log (addressDetails), drukuje dokładnie dane adresowe.

Czy ktoś może pomóc? Z góry dziękuję!!

Odpowiedz

2

Tak, to trochę błędów wysyła cię w złym kierunku. Niezależnie od tego, używasz obiektu $addToSet. Zrób to:

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

Wypróbuj poniższy kod:

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

hi - nadal otrzymuję to samo "Gdy opcja modyfikatora jest prawdziwa, obiekt sprawdzania poprawności musi mieć co najmniej jeden operator." błąd:/Myślę, że moja składnia jest w porządku ... czy MOGĘ być coś złego w schemacie? –

Powiązane problemy