标签: graphql-js

如何定义针对ORM分页的中继连接?

我查看了Relay的所有文档,似乎没有关于如何与ORM建立中继连接的直接解释.所有示例似乎都使用这种connectionFromArray方法,如果您将数据存储在内存中,但是当您将数据存储在数据库中时,您将如何提供连接分页所需的信息?

javascript node.js graphql graphql-js relayjs

6
推荐指数
1
解决办法
1008
查看次数

Graphql查询中的多个枚举

我想设置一个查询,该查询具有针对同一参数发送的多个枚举.

test_query(enum:FIRST,SECOND){
  stuffs
}
Run Code Online (Sandbox Code Playgroud)

看来这在graphql-JS中是不可能的,但我不确定.

graphql graphql-js

6
推荐指数
1
解决办法
1512
查看次数

如何使用GraphQLEnumType中的名称作为GraphQL查询参数的defaultValue?

在模式中定义查询时,如何引用先前声明的GraphQLEnumType的值,将其用作参数的默认值?

假设我已经定义了以下ObservationPeriodGraphQLEnumType:

observationPeriodEnum = new GraphQLEnumType {
  name: "ObservationPeriod"
  description: "One of the performance metrics observation periods"
  values:
    Daily:
      value: '1D'
      description: "Daily"
    […]
}
Run Code Online (Sandbox Code Playgroud)

并将其用作查询参数的类型period:

queryRootType = new GraphQLObjectType {
  name: "QueryRoot"
  description: "Query entry points to the DWH."
  fields:
    performance:
      type: performanceType
      description: "Given a portfolio EID, an observation period (defaults to YTD)
                    and as-of date, as well as the source performance engine,
                    return the matching performance metrics."
      args:
        period:
          type: observationPeriodEnum 
          defaultValue: observationPeriodEnum.Daily …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js

6
推荐指数
1
解决办法
1759
查看次数

如何将请求体传递给GraphQL上下文?

我正在尝试将请求主体放入上下文中,因为正文的一部分包含需要解码的JWT.但是,当我尝试以下内容时,我的上下文未定义:

    app.use('/', graphqlHTTP((req) => ({
      schema: Schema,
      context: req.body,
      pretty: true,
      graphiql: false
    })));
Run Code Online (Sandbox Code Playgroud)

我退出了req,我没有看到身体.我正在使用一个名为react-reach的库,它会在请求中向主体添加以下内容:

    {
      query: {...},
      queryParams: {...},
      options: {
       token: '...' // <-- I'm passing the token into options
      }
    }
Run Code Online (Sandbox Code Playgroud)

我知道正在解释正文,因为正在解释和执行正文中的查询/突变.传递给上下文时似乎无法找到它.

api node.js graphql graphql-js

6
推荐指数
1
解决办法
3122
查看次数

Relay.js - 没有收到道具,只有__dataId__

所以我想弄清楚Relay.js.我想到了一个简单的应用程序,它基本上模仿了Relay网站上的例子.虽然我已经设法摆脱了两个控制台(节点和chrome)中的错误,但我的组件没有收到我在Raley.Container中指定的片段.我不知道问题出在哪里,因为我的应用程序看起来非常像Relay的例子.

请注意,map方法on this.props.companies不可用,因为它是一个具有1个属性的对象,即__dataId__.

第一部分

class App extends React.Component {
  render() {
    return (
      <div>
        {this.props.companies.map((comapny => <Company company={company} />))}
      </div>
    );
  }
}

export default Relay.createContainer(App, {
  fragments: {
    companies: () => Relay.QL`
      fragment on Companies {
        companies { ${Company.getFragment('company')} }
      }
    `,
  },
});
Run Code Online (Sandbox Code Playgroud)

第二部分

class Company extends React.Component {
  render() {
    return (
      <div>
        <h1>{this.props.comapany.name}</h1>
      </div>
    );
  }
}

export default Relay.createContainer(Company, {
  fragments: {
    company: () => Relay.QL`
      fragment on Company {
        __id,
        name
      }
    `, …
Run Code Online (Sandbox Code Playgroud)

javascript relay reactjs graphql-js

6
推荐指数
0
解决办法
105
查看次数

GraphQL嵌套查询定义

我正在尝试为我的查询创建树状结构,以摆脱像我这样的查询

peopleList, peopleSingle, peopleEdit, peopleAdd, peopleDelete companyList, companySingle, companyEdit, companyAdd, companyDelete etc. 
Run Code Online (Sandbox Code Playgroud)

最后我想发送这样的查询:

query test {
  people {
    list {
      id
      name
    }
    single(id: 123) {
      id
      name
    }
  }
  company {
    list {
      id
      name
    }
    single(id: 456) {
      id
      name
    }
  }
}

mutation test2 {
  people {
    create(data: $var) {
      id
      name
    }
  }
  people {
    edit(id: 123, data: $var) {
      id
      name
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的人员模块上的查询对象的一部分:

people: {
  type: //What type this should be?
  name: 'Root …
Run Code Online (Sandbox Code Playgroud)

javascript schema graphql graphql-js

6
推荐指数
1
解决办法
2万
查看次数

如何在Gatsby JS中查询外部GraphQL端点?

我没有看到任何明确的方法来查询外部GraphQL端点(即https://somewebsite.com/graphql)的数据.有没有其他人这样做过,你是怎么做到的?

我认为它需要你构建一个自定义插件,但这对于这样一个简单的需求来说似乎有些过分.我搜索了文档,这个问题并没有得到解决.

graphql-js gatsby

6
推荐指数
1
解决办法
1862
查看次数

Angular - Apollo:客户尚未定义

我正在使用apollo客户端进行graphql.我在AppApolloModule中设置了我正在AppModule中导入的客户端.我正在一个服务中进行查询,该服务也在AppModule中导入.虽然该服务在AppApolloModule运行之前运行,因此在进行查询时未初始化apollo并且我收到此错误

Error: Client has not been defined yet
Run Code Online (Sandbox Code Playgroud)

AppApolloModule

imports ....

export class AppApolloModule {

    constructor(
        apollo: Apollo,
        httpLink: HttpLink,
        private userService: UserService
    ) {
        console.log("apollo module")
        apollo.create({
            link: httpLink.create({ uri: `${environment.apiBase}/graphql?${this.myService.token}`}),
            cache: new InMemoryCache()
        })
    }

}
Run Code Online (Sandbox Code Playgroud)

应用模块

import { AppApolloModule } from './app.apollo.module';
import { MyService } from './services/my.service';

export class AppModule {
      constructor() {
        console.log("app module")
      }
}
Run Code Online (Sandbox Code Playgroud)

我没有得到两个控制台app模块和apollo模块,因为服务首先运行,它没有找到任何初始化的apollo应用程序,因此打破了代码.

如何以高效和标准的方式在服务或任何服务之前运行apollo?

javascript apollo graphql graphql-js angular

6
推荐指数
1
解决办法
2180
查看次数

graphql,当存在“添加”和“更新”突变时,如何设计输入类型?

这是我的要求:

  1. “添加”突变,BookInput输入类型的每个字段(或称为标量)都应具有附加的类型修饰符“!” 验证非空值。这意味着当我添加一本书时,参数必须具有titleauthor字段,例如{title: "angular", author: "novaline"}

  2. “更新”突变,我想更新本书的一部分字段,不想更新整本书(MongoDB文档,而且,我不想前端将graphql服务器传递给一个完整的大本书突变参数节省带宽)。这意味着book参数可以是{title: "angular"}{title: "angular", author: "novaline"}

这是我的类型定义:

const typeDefs = `
  input BookInput {
    title: String!
    author: String!
  }

  type Book {
    id: ID!
    title: String!
    author: String!
  }

  type Query {
    books: [Book!]!
  }

  type Mutation{
    add(book: BookInput!): Book
    update(id: String!, book: BookInput!): Book
  }
`;
Run Code Online (Sandbox Code Playgroud)

目前,“添加”突变可以正常工作。但是,如果我通过{title: "angular"}参数,“更新”突变将无法通过非空检查

这是一个无法通过非空检查的突变,BookInput输入类型缺少“作者”字段。

mutation {
  update(id: "1", book: {title: "angular"}) {
    id
    title …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js apollo-server

6
推荐指数
1
解决办法
1158
查看次数

GraphQL和CSRF保护

我读了很多:

  1. https://github.com/pillarjs/understanding-csrf
  2. https://security.stackexchange.com/questions/10227/csrf-with-json-post
  3. JSON Web服务是否容易受到CSRF攻击?
  4. (ApolloServer站点上没有任何内容:https ://www.apollographql.com/docs/apollo-server/ )

但是,我还无法理解我们的端点(// graphql)是否受到这种类型的攻击的保护,或者是否有必要使用以下解决方案来保护它:https : //github.com/expressjs/csurf

我不清楚的是在这里:https : //github.com/pillarjs/understanding-csrf他们说:

当您错误地使用CSRF令牌时:...将它们添加到JSON AJAX调用中如上所述,如果您不支持CORS并且您的API严格是JSON,则将CSRF令牌添加到您的AJAX调用中绝对没有意义。

如果我们将端点限制为仅使用Content-Type: application/json,那么我们安全吗?

security csrf csrf-protection graphql graphql-js

6
推荐指数
1
解决办法
3136
查看次数