Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

GraphQL - तर्क पर निर्भर रिटर्न परिकलित प्रकार

जो का जवाब ({"name":"ratio" , value:data.active/data.total} जोड़ें परिणाम के लिए एक बार डेटाबेस से परिणाम प्राप्त होने के बाद) बिना किसी स्कीमा परिवर्तन के इसे करेंगे।

एक वैकल्पिक विधि के रूप में या ग्राफ़क्यूएल में इसे करने के लिए एक अधिक सुरुचिपूर्ण तरीके के रूप में, फ़ील्ड नामों को तर्क के रूप में पारित करने के बजाय प्रकार में ही निर्दिष्ट किया जा सकता है। और ratio की गणना करें रिज़ॉल्वर लिखकर।

तो, ग्राफक्यूएल स्कीमा होगा:

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

type Query {
  items: [Item]
}

क्लाइंट फ़ील्ड निर्दिष्ट करता है:

{
  items {
    total 
    active 
    ratio
  }
}

और ratio रिज़ॉल्वर के अंदर गणना की जा सकती है।

यहाँ कोड है:

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. SQL में निर्दिष्ट रिकॉर्ड के बाद अगला रिकॉर्ड कैसे खोजें?

  2. Zend Framework 2 में MySQL संग्रहीत कार्यविधि आउटपुट तक पहुंचना

  3. किस संयोजन का उपयोग करना है ताकि `ş` और `s` को अद्वितीय मान माना जाए?

  4. MySQL यहां सिंगल लाइन टिप्पणियों का समर्थन नहीं कर रहा है। क्या कारण रहा होगा?

  5. किसी ने मेरा डेटाबेस हैक कर लिया है - कैसे?