Reputation: 1653
At this point I've actually pared down my code to mimic the example in the docs, and I'm getting the same error.
I've defined my Collection as such:
var Categories = new Mongo.Collection('categories');
const CategorySchema = new SimpleSchema({
title: {
type: String,
label: "Title",
max: 255,
optional: true
},
created: {
type: Date,
label: "Date Category Created",
autoValue: () => {
if(this.isInsert){
return new Date();
} else if (this.isUpsert) {
return {$setOnInsert: new Date()};
}
}
},
updated: {
type: Date,
label: "Date Category Modified",
autoValue: () => {
if(this.isUpdate){
return new Date();
}
},
optional: true
}
});
Categories.attachSchema(CategorySchema);
export { Categories };
The autovalue stuff is borrowed straight from the docs.
And have a method for calling insert:
Meteor.methods({
'categories.insert'(title){
check(title, String);
Categories.insert({title: title}, (err, res) => {
if(err){
console.error("Category insert failed: " + err);
}
});
},
...
As I've tried to get through this issue, I've added and removed rules to the schema definition, sometimes getting a call stack exceeded
error. Mostly what I get is the following:
Exception while simulating the effect of invoking 'categories.insert' TypeError: func is not a function
at http://localhost:3000/packages/modules.js?hash=fefb674368e70344875cb9448e3ea784a880ffb0:13027:18
at Array.forEach (native)
at doValidation (http://localhost:3000/packages/modules.js?hash=fefb674368e70344875cb9448e3ea784a880ffb0:13026:17)
at ValidationContext.validate (http://localhost:3000/packages/modules.js?hash=fefb674368e70344875cb9448e3ea784a880ffb0:12580:57)
at ns.Collection.doValidate (http://localhost:3000/packages/aldeed_collection2-core.js?hash=0564817159bbe9f8209b6a192a1fa2b2bbab924a:466:33)
at ns.Collection.Mongo.Collection.(anonymous function) [as insert] (http://localhost:3000/packages/aldeed_collection2-core.js?hash=0564817159bbe9f8209b6a192a1fa2b2bbab924a:260:25)
at ns.Collection.<anonymous> (http://localhost:3000/packages/matb33_collection-hooks.js?hash=d44fd0eb02806747e1bb0bdc3938463e415c63ec:402:19)
at ns.Collection.collection.(anonymous function) [as insert] (http://localhost:3000/packages/matb33_collection-hooks.js?hash=d44fd0eb02806747e1bb0bdc3938463e415c63ec:155:21)
at DDPCommon.MethodInvocation.categories.insert (http://localhost:3000/app/app.js?hash=580bf82f2f196202280f32cf5ffacbc930cd6b10:20073:14)
at http://localhost:3000/packages/ddp-client.js?hash=c9ca22092a3137a7096e8ab722ba5ab8eedb9aec:4076:25 TypeError: func is not a function
at http://localhost:3000/packages/modules.js?hash=fefb674368e70344875cb9448e3ea784a880ffb0:13027:18
at Array.forEach (native)
at doValidation (http://localhost:3000/packages/modules.js?hash=fefb674368e70344875cb9448e3ea784a880ffb0:13026:17)
at ValidationContext.validate (http://localhost:3000/packages/modules.js?hash=fefb674368e70344875cb9448e3ea784a880ffb0:12580:57)
at ns.Collection.doValidate (http://localhost:3000/packages/aldeed_collection2-core.js?hash=0564817159bbe9f8209b6a192a1fa2b2bbab924a:466:33)
at ns.Collection.Mongo.Collection.(anonymous function) [as insert] (http://localhost:3000/packages/aldeed_collection2-core.js?hash=0564817159bbe9f8209b6a192a1fa2b2bbab924a:260:25)
at ns.Collection.<anonymous> (http://localhost:3000/packages/matb33_collection-hooks.js?hash=d44fd0eb02806747e1bb0bdc3938463e415c63ec:402:19)
at ns.Collection.collection.(anonymous function) [as insert] (http://localhost:3000/packages/matb33_collection-hooks.js?hash=d44fd0eb02806747e1bb0bdc3938463e415c63ec:155:21)
at DDPCommon.MethodInvocation.categories.insert (http://localhost:3000/app/app.js?hash=580bf82f2f196202280f32cf5ffacbc930cd6b10:20073:14)
at http://localhost:3000/packages/ddp-client.js?hash=c9ca22092a3137a7096e8ab722ba5ab8eedb9aec:4076:25
meteor.js?hash=27829e9…:930 Error invoking Method 'categories.insert': Internal server error [500]
EDIT
After swapping out the arrow functions:
methods.js
Meteor.methods({
// Settings: create new category
'categories.insert': function(title){
check(title, String);
Categories.insert({title: title}, function(err, res){
if(err){
console.error("Category insert failed: " + err);
}
});
},
...
settings.js
Template.settings.onCreated(function(){
Meteor.subscribe('categories');
});
Template.settings.helpers({
categories: function(){
return Categories.find();
}
});
Template.settings.events({
'click #newCategoryButton': function(e){
let title = $("#newCategoryInput").val();
if(title !== ""){
Meteor.call('categories.insert', title);
$("#newCategoryInput").val("").focus();
}
},
'click .removeCategory': function(e){
var id = $(e.currentTarget).data('id');
Meteor.call('categories.remove', id);
}
});
Categories.js
var Categories = new Mongo.Collection('categories', options);
const CategorySchema = new SimpleSchema({
title: {
type: String,
label: "Title",
max: 255,
optional: true
},
created: {
type: Date,
label: "Date Category Created",
autoValue: function(){
if(this.isInsert){
return new Date();
} else if (this.isUpsert) {
return {$setOnInsert: new Date()};
}
}
},
updated: {
type: Date,
label: "Date Category Modified",
autoValue: function(){
if(this.isUpdate){
return new Date();
}
},
optional: true
}
});
Categories.attachSchema(CategorySchema);
Still getting the same error as in original post
Upvotes: 0
Views: 171