我使用first after和last before做分页.
hasNextPage并且hasPreviousPage非常有用.
但我需要的是total count,我可以计算和显示page 5 of 343 pages客户端上的内容.
不幸的是,pageInfo即使我在服务器站点上有信息,这也不是其中的一部分.
能否请您包括total在该领域pageInfo,并延伸connectionFromArray至采取在总arrayLength像connectionFromArraySlice已经这样做?
谢谢
让我们说我们有以下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 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)我在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)
但前一个似乎更容易.
需要一些帮助.我想请求以下数据:
{
parent {
obj1 {
value1
}
obj2 {
value2
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要value1解析器中value2的结果进行计算.
想在value2中返回一个promise并以某种方式将它带入value1解析器,但是如果value2解析器还没有运行呢?
有什么办法可以做到的吗?
我正在尝试编写一个查询来检索一个对象,该对象的属性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 …
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,我得到一点从具体问题有不同的实现书写时感到困惑fields的GraphQLObjectType。
这两种实现有什么区别?
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中的图像上传
通过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) 我想ids从查询变量中获取一个字符串数组作为参数并在我的解析器中使用。下面是我的代码。
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) graphql-js ×10
graphql ×8
javascript ×4
node.js ×2
relayjs ×2
contentful ×1
gatsby ×1
key-value ×1
nestjs ×1
reactjs ×1
rest ×1
typescript ×1