Nodejs Hasura插件实现GraphQL API与数据库交互的使用

Nodejs Hasura插件实现GraphQL API与数据库交互的使用
在Node.js中使用Hasura插件来实现GraphQL API与数据库交互是一个非常实用的方法。Hasura是一个开源的服务,它能够快速地将GraphQL API连接到你的数据库。下面是如何设置和使用Hasura插件的基本步骤。

1. 安装Hasura CLI

首先,你需要安装Hasura CLI工具,这可以通过npm来完成:

npm install -g hasura-cli

然后,初始化一个Hasura项目:

hasura init my-hasura-project
cd my-hasura-project

2. 配置数据库

接着,配置你的数据库。Hasura支持多种数据库,包括PostgreSQL、MySQL等。这里以PostgreSQL为例:

编辑hasura-project.yaml文件,添加你的数据库连接信息:

version: 2
endpoint: http://localhost:8080
admin_secret: myadminsecretkey
metadata_directory: metadata
pg_connection_string: postgres://username:password@host:port/dbname

确保替换上述中的usernamepasswordhostportdbname为你自己的数据库凭证。

3. 启动Hasura引擎

启动Hasura引擎,这将监听你的GraphQL请求:

hasura console

这将启动一个本地服务器,并打开浏览器指向Hasura控制台,你可以在这里管理数据模型、权限等。

4. 使用Node.js客户端

在你的Node.js应用中,你可以使用Apollo Client或其他GraphQL客户端库来与Hasura GraphQL API进行交互。以下是一个简单的例子:

const { ApolloClient, InMemoryCache, gql } = require('@apollo/client');

const client = new ApolloClient({
  uri: 'http://localhost:8080/v1/graphql',
  cache: new InMemoryCache()
});

client.query({
  query: gql`
    query GetUsers {
      users {
        id
        name
        email
      }
    }
  `
}).then(result => console.log(result));

这段代码定义了一个GraphQL查询,用于从Hasura获取用户列表。

5. 权限和角色

Hasura还允许你定义复杂的数据访问规则和角色,这对于构建多用户系统非常有用。你可以在Hasura控制台中设置这些规则,也可以通过编写元数据文件来管理它们。

总结

以上就是使用Hasura插件在Node.js中实现GraphQL API与数据库交互的基本流程。通过这种方式,你可以快速搭建起强大的后端服务,专注于业务逻辑而不是底层的数据访问层。


3 回复

当然,让我用点幽默来解释这个!

想象一下,你正在做一个超级英雄项目,你的Node.js就是你的超能力,而Hasura就像是你的超级战衣。现在,你想让你的战衣(Hasura)和你的超能力(Node.js)通过一种特殊的方式(GraphQL API)交流,以便与一个秘密数据库(比如反派的秘密基地)互动。

首先,你需要安装@hasura/nodejs-sdk这个插件,这就像给你的战衣装上了一个特殊的通讯器。然后,在你的Node.js代码中,你可以这样初始化:

const { HasuraClient } = require('@hasura/nodejs-sdk');

const hasuraClient = HasuraClient.fromUrl('https://your-hasura-instance.hasura-app.io/v1/graphql', {
  headers: {
    'x-hasura-admin-secret': 'your-secret-key',
  },
});

接下来,你可以像这样查询数据库:

hasuraClient.query({
  query: `query HeroNameQuery {
              hero {
                name
              }
            }`,
}).then((result) => {
  console.log(result.data.hero.name); // 输出超级英雄的名字!
});

这样,你就成功地让Node.js和Hasura一起工作了,就像超级英雄团队一样,共同对抗数据库中的反派数据!

希望这能帮到你,也希望能为你的编程之旅增添一点乐趣!


Hasura是一个开源的GraphQL引擎,它可以与任何PostgreSQL数据库无缝集成,并允许您通过GraphQL API访问数据。为了在Node.js项目中使用Hasura,你需要安装hasura-cligraphql库。下面是如何设置并使用Hasura的步骤:

1. 安装Hasura CLI

首先,你需要全局安装Hasura CLI工具,这将帮助你初始化一个新的Hasura项目。

npm install -g hasura-cli

2. 初始化Hasura项目

使用hasura命令行工具初始化一个新项目:

hasura init my-hasura-project
cd my-hasura-project

3. 配置Hasura连接到你的PostgreSQL数据库

编辑hasura/project.yaml文件,添加你的数据库连接信息:

datasources:
  postgres:
    name: default
    kind: postgres
    from:
      url_from_env: HASURA_GRAPHQL_DATABASE_URL

确保你设置了环境变量HASURA_GRAPHQL_DATABASE_URL,指向你的PostgreSQL数据库URL。

4. 使用Node.js和Express创建GraphQL服务器

接下来,我们将使用Express框架创建一个简单的Node.js服务器来暴露GraphQL端点。首先,安装必要的依赖:

npm install express graphql express-graphql hasura-client

然后,在你的项目中创建一个服务器文件(例如:server.js):

const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { makeExecutableSchema } = require('@graphql-tools/schema');
const { execute, subscribe } = require('graphql');
const { createServer } = require('http');
const { SubscriptionServer } = require('subscriptions-transport-ws');

// 假设你已经定义了一个GraphQL schema
const typeDefs = `
type Query {
  hello: String
}
`;

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

const schema = makeExecutableSchema({ typeDefs, resolvers });

const app = express();
app.use(
  '/graphql',
  graphqlHTTP({
    schema,
    graphiql: true, // 开发环境下启用GraphiQL界面
  })
);

const httpServer = createServer(app);
httpServer.listen(4000, () => {
  console.log('Running a GraphQL API server at localhost:4000/graphql');

  new SubscriptionServer(
    {
      execute,
      subscribe,
      schema,
    },
    {
      server: httpServer,
      path: '/graphql',
    }
  );
});

这段代码设置了一个简单的GraphQL服务器,你可以通过/graphql端点访问它。

5. 测试API

启动服务器后,你可以通过浏览器或任何GraphQL客户端(如GraphiQL)访问http://localhost:4000/graphql,尝试执行查询,比如:

query {
  hello
}

这应该返回"Hello world!"

以上就是如何在Node.js项目中使用Hasura的基本步骤。根据你的具体需求,你可能需要进一步配置Hasura以满足特定的数据模型、权限控制等要求。

使用Node.js与Hasura插件实现GraphQL API与数据库交互,首先需要安装Hasura CLI和GraphQL客户端库。接着,通过Hasura CLI将现有数据库模式同步到Hasura引擎。然后,在Node.js项目中使用apollo-servergraphql库创建GraphQL服务器。通过配置apollo-server连接到Hasura引擎,即可利用GraphQL查询直接操作数据库。最后,根据需求编写解析器来处理业务逻辑。这样,你就实现了Node.js应用与数据库之间的GraphQL交互。

回到顶部