我有一个javascript函数抱怨它的主体内的调用不是被调用之前的函数。有人可以帮我解释一下吗?

上下文:我正在使用MeteorCollection2,并且希望使用一个函数在模式的不同属性上重用。确切地说,我想执行以下操作:

function foo (autoVal, self){
  if(something){
     return autoVal;
  }else{
     return self.unset();
  }
}

export const myCollection = new Mongo.Collection('myCollection');

const Schema = new SimpleSchema({
   my_field:{
      type:Boolean,
      autoValue: foo(false,this),
   }
});

myCollection.attachSchema(Schema);


保存并运行Meteor时,它不会启动,并且出现以下错误消息:

TypeError: self.unset is not a function

我觉得我缺少有关如何调用或执行javascript函数的信息,有人可以指出为什么会这样吗?

最佳答案

尝试这个:

function foo (autoVal, self){
  if(something){
     return autoVal;
  }else{
     return self.unset();
  }
}

export const myCollection = new Mongo.Collection('myCollection');

const Schema = new SimpleSchema({
   my_field:{
      type:Boolean,
      autoValue() {
        return foo(false, this);
      }
   }
});

myCollection.attachSchema(Schema);

10-08 00:27