标签: graphql-js

如何使用apollo服务器对graphQl中的数据进行排序?

我使用 apollo-server 编写 graphql 代码。在发送数据之前,我想根据可选字段和过滤器对数据进行某种排序,并且我需要知道编写代码的正确方法?graphql中有没有一种方法可以自动对我的数据进行排序?

我使用lodash进行排序,我认为在我搜索后我看到了prisma但它们没有优化,但我的数据是由另一个不在数据库中的 api 返回的。我需要像棱镜这样的东西。

我的代码是这样的,我想根据查询中的名称或姓氏对书籍进行排序,但在 api 返回的实际书籍对象中。

const { ApolloServer, gql, } = require('apollo-server');

const books = [
{
    title: 'Harry Potter and the Chamber of Secrets',
    authors: [{"name":"a1", "lastName":"aa1"},{"name":"b1", "lastName":"bb1"},{"name":"c1", "lastName":"cc1"}]
  },
  {
    title: 'Jurassic Park',
    authors: [{"name":"a" ,"lastName":"aa"},{"name":"b", "lastName":"bb"},{"name":"c", "lastName":"cc"}]
  },
];
const typeDefs = gql`

type Book {
    title: String
    authors: [Author]
  }
type Query{
    books: [Book]
  }
type Author{
name: String
lastName: String
}
  `;
const resolvers = { …
Run Code Online (Sandbox Code Playgroud)

sorting node.js apollo graphql-js

3
推荐指数
1
解决办法
6435
查看次数

如何获取graphql中的所有Enum值

如何检索 graphql 中枚举类型的所有值?

\n\n

例子:

\n\n
 enum TRUCKPE_NAME {\n  TATA_407\n  TATA_709\n  TATA_1106\n  ECHIER_1103\n}\n\ntype Document {\n  truckType: TRUCKPE_NAME\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想获取上面枚举中的所有名称。就像是

\n\n
console.log(prisma.Documents().truckType())\n\n// output\n\nTATA_407\nTATA_709\nTATA_1106\nECHIER_1103\n
Run Code Online (Sandbox Code Playgroud)\n

graphql graphql-js prisma

3
推荐指数
1
解决办法
6267
查看次数

如何从node.js函数将变量传递到graphql-tag?

我有以下功能:

import ApolloClient from 'apollo-boost'
import gql from 'graphql-tag'
import fetch from 'node-fetch'
global.fetch = fetch

const client = new ApolloClient({
    uri: 'myUri'
  })
const getPostsByCategory = async category => {
    const res = await client.query({
        query: gql`
          query articlesByCategory($id: String!) {
            postsByCategory(id: $id) {
              id
            }
          }
        `
      })
      console.log('res', res)
}
Run Code Online (Sandbox Code Playgroud)

我想调用该函数:

await getPostsByCategory('news')
Run Code Online (Sandbox Code Playgroud)

但是我只是不明白如何将类别变量传递到查询中。我想在查询中使用qraphql-tag而不是传递简单的标记文字作为查询。

javascript node.js graphql graphql-js

3
推荐指数
1
解决办法
3177
查看次数

一对多关系未显示在对象放大架构定义中

我刚开始将 amplify 与 GraphQL 结合使用。我正在设置数据库模式并在运行放大推送后自动生成函数。

\n

我想要实现但不知道如何实现的目标

\n
    \n
  1. 我希望能够在 getUser 返回的对象中获取用户的所有连接信息(一对一和一对多关系)
  2. \n
  3. 我希望仍然能够获取 userByUserName 并查看所有连接的一对多关系
  4. \n
\n

当调用API生成的函数来获取用户时,

\n
let user = await API.graphql(graphqlOperation(getUser,{id:userId}))\n
Run Code Online (Sandbox Code Playgroud)\n

我正在获取一个用户对象,但是,它看起来像这样 - 即使我确信数据库中的数据设置正确。

\n
buttons: {nextToken: null} -- WANT THIS TO INCLUDE ACTUAL INFORMATION ABOUT BUTTONS CONNECTED TO THIS USER\ncreatedAt: "2020-09-02T23:41:12.278Z"\ncustomStyles: {id: "e3d1bbef-ec6f-4a6d-9b5d-e693e890d4e0", bgColor: "F9FF9F", bgBtnColor: "FFFFFF", bgBtnHoverColor: "000000", textColor: "000000", \xe2\x80\xa6}\ndefaultStyles: null\nemail: "nata@email.edu"\nfirstName: "Nata"\nid: "d683a6bb-383e-4cf1-943a-05b3da4e5cc3"\nlastName: "Vache"\nsocialNetwork: {nextToken: null} -- WANT THIS TO INCLUDE ACTUAL INFORMATION ABOUT SOCIAL NETWORKS CONNECTED TO THIS USER, THE …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amplifyjs graphql-js aws-amplify graphql-schema

3
推荐指数
1
解决办法
3505
查看次数

onCompleted 回调未调用 useLazyQuery 钩子 apollo 客户端(React)中的第二次调用

我正在使用 apollo 客户端对 graphql 查询做出反应,现在我有一个问题,虽然我使用 useLazyQuery 钩子以编程方式查询,但是当我第二次查询时, onCompleted 回调实际上没有触发,网络请求实际上已完成并且 1 索引中的状态该钩子的返回值正在更新

const [getUser, getUserStatus] = useLazyQuery(GET_USER, {
    fetchPolicy: 'no-cache',
    notifyOnNetworkStatusChange: true,
    // this callback is not triggering 2nd call of getUser
    onCompleted: (data) => {
        const { customerCart, customer } = data;
        if (!id) {
            dispatch(updateCartId(customerCart.id));
        }
        if (id !== customerCart.id) {
            mergeCart({
                variables: { cartId: id, cartIdToMerge: customerCart.id },
            });
        }
        dispatch(updateUser(customer));
    },
    onError: (error) => {
        checkHasAuth(error);
    },
});

useEffect(() => {
    if (token) {
        // here i …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs graphql-js apollo-client

3
推荐指数
1
解决办法
8930
查看次数

GraphQL - 在多个字段中搜索字符串

我正在尝试使用 GraphQL 跨多个字段搜索字符串。

我能够将过滤函数与 or 字段一起使用,但它没有检索任何内容。我希望能够检索一个数组,其中包含标题或/和正文 ==> 中包含搜索字符串的所有项目,因此如果在标题或正文中找到查询字符串,则将其检索到数组中。

我的代码是:

const search_reviews= gql`
 query SearchReviews ($my_query: String) {
    reviews (filters: {title: {contains: $my_query}, or: {body: {contains: $my_query}} }) {
      data{
        id
        attributes{
          title
          rating
          body
          categories{
            data{
              id
              attributes
              {
                name
              }
            }
          }
        }
    }
  
 }
}

`
Run Code Online (Sandbox Code Playgroud)

仅适用于一个字段,但我想在两个字段中都有它

const search_reviews= gql`
 query SearchReviews ($my_query: String!) {
    reviews (filters: {body: {contains: $my_query} }) {
      data{
        id
        attributes{
          title
          rating
          body
          categories{
            data{
              id
              attributes
              {
                name
              }
            }
          }
        } …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js

3
推荐指数
1
解决办法
5478
查看次数

如何在 GraphQL 查询中传递对象类型参数?

我收到了这种类型的查询

query {
    searchRandom (param : MyObjectClass){
        city
    }
}
Run Code Online (Sandbox Code Playgroud)

如何设置 param 的类型MyObjectClass并将其传递到查询中?能在这里测试吗?

在此输入图像描述

graphql graphql-js graphql-java express-graphql

3
推荐指数
1
解决办法
7041
查看次数

共享中继nodeInterface

我想与多个GraphQL类型共享一个nodeInterface.目前收到此错误:

Error: User may only implement Interface types, it cannot implement: undefined.
Run Code Online (Sandbox Code Playgroud)

我已经声明了这样的界面:

// file: node-interface.js
let {nodeInterface, nodeField} = nodeDefinitions(
  (globalId) => {
    let {type, id} = fromGlobalId(globalId);
    if (type === 'UserModel') {;
      return UserModel.findOne(id).exec();
    }
    return null;
  },
  (obj) => {
    if (obj instanceof UserModel) {
      return UserType;
    }
    return null;
  }
);

export { nodeInterface };
export { nodeField };

and attempting to use it in my UserType like this 

// file: user.js
import {
  nodeInterface
} …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js relayjs

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

渲染需要窗口对象的同构React组件

我有一个同构的React应用程序,组件在服务器端呈现.我希望使用第三方React组件:(GraphiQL),并且呈现如下:

var GraphiQLComponent = React.createElement(GraphiQL, { fetcher: graphQLFetcher}, "");

router.get('/graphiql', function (req, res) {
  res.send(ReactDOMServer.renderToString(GraphiQLComponent));
});
Run Code Online (Sandbox Code Playgroud)

但是,此组件使用window对象:window.localStorage并且window.addEventListener,当我尝试在浏览器中加载页面时,我收到错误:

ReferenceError: window is not defined
Run Code Online (Sandbox Code Playgroud)

我可以在服务器上渲染使用窗口对象的React组件吗?如果是这样,我需要做些什么来解决此错误?

javascript reactjs isomorphic-javascript graphql-js

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

GraphQL中有多个rootQuery对象

有没有办法通过创建多个rootQuery对象并在架构中将它们组合在一起来重构rootQuery对象?

所以现在我们有一个rootQuery充满了多个根,然后我们创建了一个架构,说我们有一个根查询.我们写的是

var schema = new GraphQLSchema({
 query: RootQuery
})
Run Code Online (Sandbox Code Playgroud)

我想要的是什么样的

var schema = new GraphQLSchema({
 query: [RootQuery1, RootQuery2]
})
Run Code Online (Sandbox Code Playgroud)

有没有办法在GraphQL中做到这一点?它将有助于重构.

refactoring graphql graphql-js

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