gpt4 book ai didi

graphql - 我们如何为 Feathersjs + Apollo v2 使用钩子(Hook)?

转载 作者:行者123 更新时间:2023-12-02 00:52:34 26 4
gpt4 key购买 nike

在为 Feathersjs + Apollo v2 设置 Hook 时遇到问题。需要它的主要原因是授权。

src/services/graphql/graphql.service.js:65
service.hooks(hooks);
^
TypeError: Cannot read property 'hooks' of undefined

以下是我在 Feathersjs 服务中设置 Apollo v2 的代码。由于它没有模型,我不确定设置 Hook 的正确方法是什么。

const { ApolloServer, gql } = require('apollo-server-express');
const hooks = require('./graphql.hooks');

module.exports = function (app) {

const typeDefs = gql`
type Query {
hello: String
}
`;

const resolvers = {
Query: {
hello: () => 'hello world'
}
};

const server = new ApolloServer({
typeDefs: typeDefs,
resolvers: resolvers,
context: ({req, res}) => ({
provider: req.feathers.provider,
headers: req.feathers.headers,
token: req.headers['auth-token']
}),
playground: {
endpoint: 'http://localhost:3030/graphql',
settings: {
'editor.theme': 'light'
}
}
});

server.applyMiddleware({ app });

// app.use('/graphql', createService);

const service = app.service('graphql');

service.hooks(hooks);
};

最佳答案

因此,feathers 的 REST 支持并不能真正满足您的需求。

如果您将 Feathers 服务传递给 app.use,它将作为钩子(Hook)等生态系统的一部分可用。如果您只是传递 Express 服务(或间接传递,如 applyMiddleware 执行)然后 Feathers 将跳过它。它已注册到 Express,但它不在 app.services 的 Feathers 服务列表中。

您可以向链接 Express 类型中间件和 Feathers 服务的 Feathers 注册服务,例如:

app.use('/thing',
(req, res, next) => {
// does something
next();
},
{
get(id, params) {
// feathers stuff
}
}
);

此时整个服务可用于 Feathers 生态系统、 Hook 等。

你可以做的是:

  server.applyMiddleware({ app, path: 'graphql' });
app.use('graphql', {
create(data, params) {
},
get(id, params) {
},
find(params) {
},
update(id, data, params) {
},
patch(id, data, params) {
},
delete(id, params) {
}
});
app.service('graphql').hooks(hooks);

/graphql 东西设置好之后链接(无操作)服务,但我不确定你是否不必在这些服务中加入一些逻辑来正确地处理数据.请记住,羽毛服务采用 JSON 等。

您的另一个选择是在 Express 中间件中验证您的授权 token (我假设来自 authentication-jwt 的 JWT?),而不是尝试羽化/graphql 服务。

关于graphql - 我们如何为 Feathersjs + Apollo v2 使用钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com