【发布时间】:2019-02-25 22:29:20
【问题描述】:
我在服务器上定义了一些Meteor methods,我只需要在服务器上执行(Meteor.isServer)。现在我想使用Meteor.call 在Apollo resolvers 上调用这些方法,但这似乎不起作用。
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 之后)工作正常。 另一个问题是在另一个 Mutation 函数中使用解析器 Mutation 函数:
const resolvers = {
Mutation: {
addData(){ ... }
doSomething(){ return this.addData(); }
}
}
【问题讨论】:
-
你不能
return Meteor.call(...)。将Post.insert(data)放入突变或定义一个函数并调用该函数而不是 Meteor.method。 (顺便说一句,您可以将模式附加到您的集合中,这样您就不必每次都validate) -
@dabe 这只是一个例子。该方法的作用远不止 Post.insert。我还在服务器上定义了一组函数作为类,并导入它们以在 Mutation 中使用,但即使这样也不起作用。
-
确实成功了。我忘记将我的函数定义为
static是它们从中导入的文件。
标签: reactjs meteor apollo react-apollo