Mysql
 sql >> Baza danych >  >> RDS >> Mysql

GraphQL - zwraca typ wyliczony zależny od argumentu

Odpowiedź Jana (dołącz {"name":"ratio" , value:data.active/data.total} do wyniku po pobraniu wyniku z bazy danych) zrobi to bez wprowadzania jakichkolwiek zmian w schemacie.

Jako alternatywną metodę lub bardziej elegancki sposób wykonania tego w GraphQL, nazwy pól można określić w samym typie zamiast przekazywać je jako argumenty. I oblicz ratio pisząc resolvera.

Tak więc schemat GraphQL będzie wyglądał następująco:

Item {
  total: Int,
  active: Int,
  ratio: Float
}

type Query {
  items: [Item]
}

Klient określa pola:

{
  items {
    total 
    active 
    ratio
  }
}

I ratio można obliczyć wewnątrz przelicznika.

Oto kod:

const express = require('express');
const graphqlHTTP = require('express-graphql');
const { graphql } = require('graphql');
const { makeExecutableSchema } = require('graphql-tools');
const getFieldNames = require('graphql-list-fields');

const typeDefs = `
type Item {
  total: Int,
  active: Int,
  ratio: Float
}

type Query {
  items: [Item]
}
`;

const resolvers = {
  Query: {
    items(obj, args, context, info) {
      const fields = getFieldNames(info) // get the array of field names specified by the client
      return context.db.getItems(fields)
    }
  },
  Item: {
    ratio: (obj) => obj.active / obj.total // resolver for finding ratio
  }
};

const schema = makeExecutableSchema({ typeDefs, resolvers });

const db = {
  getItems: (fields) => // table.select(fields)
    [{total: 10, active: 5},{total: 5, active: 5},{total: 15, active: 5}] // dummy data
}
graphql(
  schema, 
  `query{
    items{
      total,
      active,
      ratio
    }
  }`, 
  {}, // rootValue
  { db } // context
).then(data => console.log(JSON.stringify(data)))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Railsy ActiveRecord obsługują kolumnę id, która nie jest kluczem podstawowym

  2. jak pokazać ukryty wiersz tabeli html na podstawie warunku php?

  3. Kiedy rozważyć Solr

  4. Jak wykonać 2 lub więcej zapytań SQL w PHP bez łączenia tabel

  5. Dziwny błąd MySQL tylko do odczytu