标签: graphql-js

如何在pageInfo中将总计数传递给客户端

我使用first afterlast before做分页. hasNextPage并且hasPreviousPage非常有用.

但我需要的是total count,我可以计算和显示page 5 of 343 pages客户端上的内容.

不幸的是,pageInfo即使我在服务器站点上有信息,这也不是其中的一部分.

能否请您包括total在该领域pageInfo,并延伸connectionFromArray至采取在总arrayLengthconnectionFromArraySlice已经这样做?

谢谢

javascript reactjs graphql-js relayjs

8
推荐指数
2
解决办法
2656
查看次数

优化graphql数据库查询

让我们说我们有以下graphql架构:

type Author : Object {  
  id: ID!
  name: String,
  books: [Book]
}

type Book : Object {  
  id: ID!
  title: String
  authorId: Int
  author: Author
}
Run Code Online (Sandbox Code Playgroud)

然后进行如下查询:

{
    books: {
        id 
        title
        author { id name }
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,如果我们有10本书,那么我们将最终得到10个作者查询,因为将为每个获取的书调用resolve函数:

select id, name from author where id = 123
Run Code Online (Sandbox Code Playgroud)

除此之外,我们可以将所有作者查询作为单个查询执行:

select id, name from author where id in (123, 456, 789, 1011)
Run Code Online (Sandbox Code Playgroud)

是否有一些工作解决方案,最佳实践,技术或某些有助于实现这一目标的东西?

graphql graphql-js

8
推荐指数
2
解决办法
2126
查看次数

新GraphQL buildSchema的嵌套查询

如何使用新的GraphQL Schema语言为我的friendList制作解析器?friendList有一组人_id.

我的新朋友使用GraphQL Schema语言输入:

const schema = buildSchema(`
  type People {
    _id: String
    firstName: String
    lastName: String
    demo: String
    friendList: [People]
  }
  type Query {
    getPeople(_id: String): People
  }
`);
Run Code Online (Sandbox Code Playgroud)

我的老人用GraphQLObjectType输入:

const PeopleType = new GraphQLObjectType({
  name: 'People',
  fields: () => ({
    _id: {
      type: GraphQLString,
    },
    firstName: {
      type: GraphQLString,
    },
    lastName: {
      type: GraphQLString,
    },
    friendList: {
      type: new GraphQLList(PeopleType),
      // pass @friends parentValue
      resolve: ({ friends }) {
        return People.find({ _id: { $in: friends } …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js

8
推荐指数
2
解决办法
4910
查看次数

有没有办法在GraphQL中表示键值对的对象

我在Node.js应用程序中使用GraphQL.我想存储一个对象,该对象使用键作为语言环境短代码和相应语言中字符串的值.(如{ en: "Hello", ru: "??????" }等)

我想在输入中使用GraphQL来表示这一点(就像那样):

mutation {
  addExercise(name: { en: "Hello", ru: "??????" })
}
Run Code Online (Sandbox Code Playgroud)

并在输出(像那样)

{
  exercises {
    _id, name
  }
}
Run Code Online (Sandbox Code Playgroud)

(name应返回键值对的对象:)

[
  {_id: 1, name: { en: "Hello", ru: "??????" }}
]
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

我知道我可以这样存储我的数据

{ name: "en", value: "Hello }`
Run Code Online (Sandbox Code Playgroud)

但前一个似乎更容易.

javascript key-value key-value-store graphql graphql-js

8
推荐指数
1
解决办法
4141
查看次数

GraphQL:从兄弟解析器访问另一个解析器/字段输出

需要一些帮助.我想请求以下数据:

{
  parent {
    obj1    {
        value1
    }
    obj2    {
        value2
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要value1解析器中value2的结果进行计算.

想在value2中返回一个promise并以某种方式将它带入value1解析器,但是如果value2解析器还没有运行呢?

有什么办法可以做到的吗?

javascript node.js graphql graphql-js

8
推荐指数
2
解决办法
2527
查看次数

使用 GraphQL 检索包含具有不同模式的对象数组的对象

我正在尝试编写一个查询来检索一个对象,该对象的属性linkedCards包含具有不同模式的对象数组。

我有 3 种不同的模式(内置Contentful):

CardA 示例:

{
    id: 42,
    productName: 'Laptop',
    price: 999
}
Run Code Online (Sandbox Code Playgroud)

CardB 示例:

{
    id: 999,
    title: 'Buy our refurbished Laptops today!'
}
Run Code Online (Sandbox Code Playgroud)

CardC 示例:

{
    id: 100,
    linkedCards: [
        {
            id: 42,
            productName: 'Laptop',
            price: 999
        },
        {
            id: 999,
            title: 'Buy our refurbished Laptops today!'
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

询问:

allCardC() {
    nodes {
        linkedCards {
            id
            title
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行以下 GraphQL 查询时,我得到 "Cannot query field "title" on type "CardACardBUnion". Did …

contentful graphql graphql-js gatsby

8
推荐指数
2
解决办法
3817
查看次数

graphql只解析_id字段,其他字段为null

GraphQL将我的标题和内容属性解析为null,尽管数据肯定是从服务器检索的 - 控制台日志确认它.从graphql只返回_id属性,这是我从查询中得到的内容json { listings: [ { _id: '56e6c94f1cf94a7c0a4e22ba', title: null, content: null } ] }据我所知,一切都设置正确,我还尝试给标题和内容一个GraphQLIDType来排除它所输入的差异.

我有一个graphql查询:

query(`
  query findListings {
    listings(offset: 1) {
      _id,
      title,
      content
    }
  }
`).then((json) => {
  console.log('json', json.data)
})
Run Code Online (Sandbox Code Playgroud)

我的根查询类型:

const QueryType = new GraphQLObjectType({
  name: 'Query',
  fields: {
    listings: {
      name: 'listings',
      type: new GraphQLList(ListingType),
      args: {
        limit: {
          type: GraphQLInt
        },
        offset: {
          type: GraphQLInt
        }
      },
      resolve(source, args, info) {
        const { fieldASTs } = info
        const projection = …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js

7
推荐指数
1
解决办法
854
查看次数

GraphQL 字段作为函数

我学习GraphQL,我得到一点从具体问题有不同的实现书写时感到困惑fieldsGraphQLObjectType
这两种实现有什么区别?

1.

var schema = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {  // as object
      echo: {
        type: GraphQLString,
        args: {
          email: { type: EmailType }
        },
        resolve: (root, {email}) => {
          return email;
        }
      }
    }
  })
});
Run Code Online (Sandbox Code Playgroud)

2.

var ComplicatedArgs = new GraphQLObjectType({
  name: 'ComplicatedArgs',
  fields: () => ({ // as function
    complexArgField: {
      type: GraphQLString,
      args: {
        complexArg: { type: ComplexInput }
      },
    }
  }),
});
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js

7
推荐指数
2
解决办法
1323
查看次数

GraphQL 中的图片上传

我如何处理graphql中的图像上传

通过multer使用express route处理从graphql上传和查询查看图片等数据

app.use('/graphql', upload);
app.use('/graphql', getData, graphqlHTTP(tokenData => ({
    schema,
    pretty: true,
    tokenData,
    graphiql: true,
})));
Run Code Online (Sandbox Code Playgroud)

javascript node.js graphql-js relayjs

7
推荐指数
1
解决办法
5620
查看次数

如何在 GraphQL 中的解析器中获取输入类型的数组

我想ids从查询变量中获取一个字符串数组作为参数并在我的解析器中使用。下面是我的代码。

People.resolver.ts

import {
  Resolver, Query, Mutation, Args,
} from '@nestjs/graphql';
import { People } from './People.entity';
import { PeopleService } from './People.service';

@Resolver(() => People)
export class PeopleResolver {
  constructor(private readonly peopleService: PeopleService) { }

  @Mutation(() => String)
  async deletePeople(@Args('ids') ids: string[]) : Promise<String> {
    const result = await this.peopleService.deletePeople(ids);
    return JSON.stringify(result);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误,

[Nest] 8247   - 06/22/2020, 6:32:53 PM   [RouterExplorer] Mapped {/run-migrations, POST} route +1ms
(node:8247) UnhandledPromiseRejectionWarning: Error: You need to provide explicit type for …
Run Code Online (Sandbox Code Playgroud)

rest typescript graphql graphql-js nestjs

7
推荐指数
1
解决办法
3056
查看次数