2016-06-08 4 views
1

Ich habe ein neues SimpleSchema für meine Sammlung erstellt. Sammlung Definition & Schema:SimpleSchema-Fehler: Nach dem Herausfiltern von Schlüsseln, die nicht im Schema enthalten sind, ist Ihr Modifikator jetzt leer.

GIST

Nach dieser Methode von der Client-Aufruf:

export const setEventInvitationStatus = new ValidatedMethod({ 
name: 'events.updateParticipantStatus', 

mixins: [LoggedInMixin], 

checkLoggedInError: { 
    error: 'notLogged', 
}, 

validate: new SimpleSchema({ 
    eventId: { type: String }, 
    inviteTo: { type: String }, 
    newStatus: { type: String }, 
}).validator(), 

run({ eventId, inviteTo, newStatus }) { 
    Events.update(
    { '_id': eventId, 'participants.userId': inviteTo }, 
    { 
    $set: { 'participants.$.inviteStatus': newStatus }, 
    }); 
}, 
}); 

ich diesen Fehler:

Exception while invoking method 'events.updateParticipantStatus' { stack: 'Error: After filtering out keys not in the schema, your modifier is now empty\n at [object Object].doValidate (packages/aldeed_collection2-core/lib/collection2.js:374:1)\n at [object Object].Mongo.Collection.(anonymous function) [as update] (packages/aldeed_collection2-core/lib/collection2.js:173:1)\n at [object Object].run (imports/api/events/server/methods.js:101:10)\n at [object Object].LoggedInMixin.methodOptions.run (packages/tunifight:loggedin-mixin/loggedin-mixin.js:28:16)\n at ValidatedMethod._execute (packages/mdg:validated-method/validated-method.js:93:12)\n at [object Object].ValidatedMethod.connection.methods._connection$methods.(anonymous function) (packages/mdg:validated-method/validated-method.js:54:23)\n at [object Object].methodMap.(anonymous function) (packages/meteorhacks_kadira/lib/hijack/wrap_session.js:164:1)\n at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12)\n at packages/ddp-server/livedata_server.js:711:19\n at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)', 

Was ich falsch gemacht?

Antwort

0

Sie benötigen eine Reihe von Teilnehmern im Schema enthalten:

validate: new SimpleSchema({ 
    eventId: { type: String }, 
    inviteTo: { type: String }, 
    newStatus: { type: String }, 
    participants: { type: [Object]}, // array of objects 
}).validator() 
+0

Okay, ich 'll versuchen, dass. Muss ich diese Validierung allen Methoden, die mit der Sammlung arbeiten, hinzufügen? –

+0

Ich bin mir nicht sicher, ob das da sein muss, wenn Sie den Teilnehmerschlüssel nicht berühren. In jedem Fall sollten Sie Ihren Code so organisieren, dass Sie Ihr Schema nur einmal und nicht überall deklarieren. –

Verwandte Themen