Вызовите метод Метеор внутри Мутации Аполлона - PullRequest
0 голосов
/ 21 сентября 2018

Я определил некоторые Meteor methods на сервере, которые мне нужно выполнить только на сервере (Meteor.isServer).Теперь я хочу вызвать эти методы на Apollo resolvers, используя Meteor.call, но это, похоже, не работает.

Meteor.methods({ 
  'post.add': function addpost(data) {
    new SimpleSchema({
      data: { 
        type: Object
      },
      'data.title': { type: String },
      'data.body': { type: String },
      'data.tag': { type: String },
    }).validate(data);
    return Post.insert(data);
  }
});

const resolvers = {
  Mutation: {
    doSomething(){ 
      return Meteor.call('post.add', data);
    }
  }
}

Но вызов метода на клиенте (после удаления Meteor.isServer) работает нормально.Другой проблемой является использование функции мутации преобразователей внутри другой функции мутации:

const resolvers = {
  Mutation: {
    addData(){ ... }

    doSomething(){ return this.addData(); }
  }
}

1 Ответ

0 голосов
/ 25 сентября 2018

В итоге я написал JS класс , где я определил некоторые static functions/methods (чтобы можно было вызывать методы без создания экземпляра , это class) и использовал их в моем resolvers.

// some file .../Utils
class Utils{
  static someMethod({arg1, arg2, ...}){
    ...do something
  }
}
export default Utils;

// In my resolvers
import Utils from '.../Utils'
const resolvers = {
  Mutation: {
    const a = ...;
    const b = ...;
    const c = Utils.someMethod({a, b, ...}); 
  }
}
...