标签: graphql

如何使用中继将自定义标头发送到graphql server?

我已经看到文档重新注入了一个新的DefaultNetworkLayer,但我似乎无法发送自定义标头.这是我的代码:

var headers = new Headers();
headers.append('Authorization', 'Basic hellotheretestheader');   

Relay.injectNetworkLayer(
    new Relay.DefaultNetworkLayer('/graphql', {
        headers: headers
    })
);
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

graphql relayjs

0
推荐指数
1
解决办法
799
查看次数

我尝试使用中继实现连接,并且所有节点的ID都相同

我使用graphql编写了一个非常简单的模式,但是边缘中的所有ID都是相同的.

{
    "data": {
        "imageList": {
            "id": "SW1hZ2VMaXN0Og==",
            "images": {
                "edges": [
                  {
                      "node": {
                          "id": "SW1hZ2U6",
                          "url": "1.jpg"
                      }
                  },
                  {
                      "node": {
                          "id": "SW1hZ2U6",
                          "url": "2.jpg"
                      }
                  },
                  {
                      "node": {
                          "id": "SW1hZ2U6",
                          "url": "3.jpg"
                      }
                  }
                ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在github上发布了具体细节,这里是链接.

relay reactjs graphql

0
推荐指数
1
解决办法
473
查看次数

为什么片段数据被提取但是中继突变无法访问

我有突变(代码),我想删除一个节点.它依赖于post rowId - 它是数据库中行的主键 - 以及查看者ID.当相关组件(代码)被渲染时.发送以下查询

query Queries {
  viewer {
    id,
    ...F1
  }
}
fragment F0 on Viewer {
  id
}
fragment F1 on Viewer {
  id,
  ...F0
}
Run Code Online (Sandbox Code Playgroud)

query Queries($id_0:ID!) {
  post(id:$id_0) {
    id,
    ...F2
  }
}
fragment F0 on Post {
  id,
  rowId
}
fragment F1 on Post {
  rowId,
  id
}
fragment F2 on Post {
  headline,
  body,
  id,
  ...F0,
  ...F1
}
Run Code Online (Sandbox Code Playgroud)

我得到的回应包括viewer.idpost.rowId.正如你在这里看到的,

{
  "data": {
    "post": …
Run Code Online (Sandbox Code Playgroud)

graphql relayjs

0
推荐指数
1
解决办法
149
查看次数

数组中类型为graphql的对象的GraphQL字段

我在这里定义了一个graphQL对象:

const graphql = require('graphql');
const { GraphQLObjectType } = require('graphql');

const ProductType = new GraphQLObjectType({
    name: 'Product',
    description: 'Product GraphQL Object Schemal Model',
    fields: {
        productId: { type: graphql.GraphQLString },
        SKU: { type: graphql.GraphQLString },
        quantity: { type: graphql.GraphQLFloat },
        unitaryPrice:  { type: graphql.GraphQLFloat },
        subTotal: { type: graphql.GraphQLFloat },
        discount: { type: graphql.GraphQLFloat },
        totalBeforeTax: { type: graphql.GraphQLFloat },
        isTaxAplicable: { type: graphql.GraphQLBoolean },
        unitaryTax: { type: graphql.GraphQLFloat },
        totalTax: { type: graphql.GraphQLFloat }
    }
});

module.exports.ProductType = …
Run Code Online (Sandbox Code Playgroud)

node.js graphql graphql-js

0
推荐指数
1
解决办法
1827
查看次数

在数组中组合多个const =?

如何在数组中组合数据const = menuGallery,menuCompany以及menuTour在其中调用所有数据menuData(参见下面的代码),以便我li应该显示graphQl来自所有三个数据的数据const = menuData

render() {
  const menuGallery = get(this.props, 'data.allContentfulImageGallery.edges')
  const menuCompany = get(this.props, 'data.allContentfulCompanyPage.edges')
  const menuTour = get(this.props, 'data.allContentfulTourPage.edges')
  const menuData = [{menuGallery},{menuCompany},{menuTour}]

  return(
    {menuData.map(({ node: page })=> (
      <li className={slug === page.slug ? "selected" : ""} key={page.id}><a href={`/${page.slug}`}>{page.title}</a></li>
  ))}
Run Code Online (Sandbox Code Playgroud)

如果我将电流更改const menuData为常量menuData = menuGallery,它将显示来自的数据,allContentfulImageGallery但在组合倍数时,它们不会映射数据.

graphQl查询

export const menuQuery = graphql`
query menuQuery($slug: String!) {
    allContentfulCompanyPage(sort: {fields: …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs graphql

0
推荐指数
1
解决办法
88
查看次数

Prisma绑定无法连接到prisma服务器。请求到http:// localhost:4466 /失败,原因:连接ECONNREFUSED 127.0.0.1:4466

我正在运行两个单独的docker服务。一个用于我的GraphQL服务器,另一个用于棱镜服务,该服务连接到本地Postgres数据库。我能够运行Arizona部署并直接在中进行测试http://localhost:4466。但是,当我尝试使用中的应用程序的GraphQL服务器进行查询时http://localhost:8080,它将给出以下响应。

{
  "data": null,
  "errors": [
    {
      "message": "request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "feed"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪。

graphql-server_1  | [Network error]: FetchError: request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466
graphql-server_1  | Error: request to http://localhost:4466/ failed, reason: connect ECONNREFUSED 127.0.0.1:4466
graphql-server_1  |     at new CombinedError (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/errors.js:83:28)
graphql-server_1  |     at Object.checkResultAndHandleErrors (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/stitching/errors.js:101:15)
graphql-server_1  |     at CheckResultAndHandleErrors.transformResult (/usr/src/app/node_modules/graphql-binding/node_modules/graphql-tools/dist/transforms/CheckResultAndHandleErrors.js:10:25)
graphql-server_1  |     at …
Run Code Online (Sandbox Code Playgroud)

node.js graphql graphql-js prisma prisma-graphql

0
推荐指数
1
解决办法
2307
查看次数

错误:预期[对象对象]为GraphQL类型

在我将资源部分添加到代码中之前,这段代码一直有效。它与其他两个相似,所以我不确定为什么不起作用。

提前致谢

更新:-使用调试器后,我开始了解到问题出在RootQueryType.js和与之相关的文件中,因为当我尝试导出架构时,错误地弹出,并且恰好在query:RootQueryType位置,但仍然可以不能指出错误。

更新:-我也将schema.js文件放在最后

resourceType.js

const graphql = require("graphql");
const UserType = require("./userType");
const User = require("../models/User");
const Project = require("../models/Project");
const Resource = require("../models/Resource");
const ProjectType = require("./projectType");

const {
    GraphQLObjectType,
    GraphQLString,
    GraphQLList,
  } = graphql;


  const ResourceType = new GraphQLObjectType({
    name: "ResourceType",
    fields: () => ({
      id: { type: GraphQLString },
      title: { type: GraphQLString },
      url: { type: GraphQLString },
      project:{
        type:ProjectType,
        resolve(parentValues,args){
          return Project.findById(parentValues.id).populate("resources")
        }
      }
    })
  });

  module.exports=ResourceType;
Run Code Online (Sandbox Code Playgroud)

RootQueryType.js

    const mongoose = require('mongoose');
const graphql …
Run Code Online (Sandbox Code Playgroud)

graphql express-graphql

0
推荐指数
1
解决办法
1684
查看次数

item没有类型注释,并在其自己的初始化程序中直接或间接引用

我有一个模型Location,这种关系与自身有关。

class Location extends Model<Location> {
    ...

    @BelongsTo(() => Location, "countryId")
    public country?: Location;

    @BelongsTo(() => Location, "stateId")
    public state?: Location;

    @HasMany(() => Location, "countryId")
    public states?: Location[];

    @HasMany(() => Location, "stateId")
    public regions?: Location[];

    @HasMany(() => Location, "regionId")
    public places?: Location[];

    ...
}
Run Code Online (Sandbox Code Playgroud)

所以基本上counties有很多states很多regions等等。我想将它实现为一个GraphQLType

我尝试了什么:

const LocationType = new GraphQLObjectType({
    name: "LocationType",
    fields: () => ({
        ...
        states: {type: new GraphQLList(LocationType)},
        ...
    }),
});
Run Code Online (Sandbox Code Playgroud)

错误我得到

“ LocationType”隐式具有类型“ any”,因为它没有类型注释,并且在其自己的初始化程序中直接或间接引用。

typescript graphql

0
推荐指数
1
解决办法
1043
查看次数

成功登录后如何更新ApolloClient授权标头?

基本上,我们在index.js文件中有此文件来设置ApolloProvider进行查询/更改的授权。

import React from 'react';
import ReactDOM from 'react-dom';

import App from './App';

import ApolloClient from "apollo-boost";
import { ApolloProvider } from "react-apollo";

let session = localStorage.getItem("session");
let authorization = "";
if(session) {
    let sessionObj = JSON.parse(session);
    authorization = sessionObj.access_token
}

const graphQLServerURL = process.env.REACT_APP_API_URL;
const client = new ApolloClient({
    uri: graphQLServerURL + "/graphql",
    headers: {
       authorization,
    }
});

ReactDOM.render(
    <ApolloProvider client={client}>
        <App />
    </ApolloProvider>
    , document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

当应用首次加载时,authorization标题为null。但是,在<App>组件中,我们有一个<Login>组件,该组件基本上使用 …

javascript session local-storage reactjs graphql

0
推荐指数
2
解决办法
428
查看次数

Laravel和Lighthouse,它总是读取dafault模式

我遵循Lighthouse网站上的主版本(4.1)教程。

https://lighthouse-php.com/4.1/getting-started/tutorial.html#installation

我重新安装了Laravel 5.8,然后执行了教程中编写的命令(在旁边npm install

composer require nuwave/lighthouse mll-lab/laravel-graphql-playground

php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider"

php artisan vendor:publish --provider="MLL\GraphQLPlayground\GraphQLPlaygroundServiceProvider"

之后,将/graphql/schema.graphql创建一个文件(在项目根目录下,而不是routes以前版本的文件夹下)。

现在,我用一些数据填充数据库,然后将模式从教程页面复制/粘贴到已发布的模式,启动服务器,然后访问显示正确的URL并将请求发送到的Playground http://127.0.0.1:8000/graphql

单击Schema选项卡,我总是看到默认模式,而不是发布的默认模式/graphql/schema.graphql,当然,对与用户不同的资源的查询失败,并显示诸如的错误Cannot query field "posts" on type "Query".。我已经尝试过重启服务器并刷新Playground页面。

config/lighthouse.php文件的架构已注册的路径base_path('graphql/schema.graphql')看起来正确的。

为什么Playground总是显示默认架构,而不显示已发布和编辑的架构?

我正在使用PHP 7.2.14,Lighthouse需要PHP> 7.1

php laravel graphql laravel-lighthouse

0
推荐指数
1
解决办法
177
查看次数