【问题标题】:implementation of graphql-type-jsongraphql-type-json 的实现
【发布时间】:2021-06-25 20:50:33
【问题描述】:

任何知道如何在我的模式结构中实现 graphql-type-json 的人,我想以键和值的形式获取数据。我已尝试阅读他们的文档,但找不到合适的方法在我的代码中实现。

-graphql-type-json 被很多人建议,试图将 json 分配给 graphql 类型。

"key":"customer_name",
"value":Emmanuel"
},
"key":"customer_id",
"value":"12"
},]
const { authenticate, getCountryCode } = require('../utils');
import GraphQLJSON, { GraphQLJSONObject } from 'graphql-type-json';

const typeDef = `
  extend type Query {
    userData(countryCode:String!, idNumber:String, email:String, phoneNumber:String): Data
    userDatas(countryCode:String!): [Data!]!
}

type Data {
    customer_name:String
    customer_id_number:String
    dob:String
    phone_no:String
    email:String
    }
`;
const resolvers = {
  Query: {
      userData: authenticate(
      async (root, { countryCode, idNumber, email, phoneNumber }, { models }) => {

        // Get country specific data
        const country = getCountryCode(countryCode);
        // Get customer_id_number
        if (idNumber) {
          const idRecord = await models[`${country}_Data`].findOne({
            where: { customer_id_number: idNumber },
          });
          return idRecord

        } 
         else if(email){
          const emailRecord = await models[`${country}_Data`].findOne({
            where: { email: email },
          });
          return emailRecord

        }
         else if(phoneNumber){
          const phoneRecord = await models[`${country}_Data`].findOne({
            where: { phone_no: phoneNumber },
          });
          return phoneRecord

        }         

          else if (!idNumber || !email || !phoneNumber){
            throw new Error('Input the correct credentials');
          }  
          else{
             throw new Error('Input credentials');
          }    


      },
    ),

    // Get all burglaries
    userDatas: authenticate(async (root, { countryCode }, { models }) => {
      // Get country specific data
      const country = getCountryCode(countryCode);

      const transburglaries = await models[`${country}_Data`].findAll();

      transburglaries.forEach((data) => {
        data.countryCode = countryCode;
      });
      return transburglaries;
    }),
  },
};


module.exports = {
  typeDef,
  resolvers,
};


谢谢。

【问题讨论】:

  • 为什么'我想以key和value的形式获取数据'?原因?
  • 仅供学习使用
  • 按照 Seppe 的建议定义类型(您不需要 json 类型),学习返回具有匹配形状的数据,将您的 DB/服务/模型记录转换为该类型形状

标签: javascript node.js graphql


【解决方案1】:

大家好,欢迎来到 Stack Overflow,

我不完全确定我是否理解您的需求,但根据我的解释方式,您可以尝试以下方式:

Type KeyValuePair {
   key: String!
   value: String!
}

如果我的解释有误,请尝试再次解释。也许有一个你确实需要的具体例子。

打招呼

【讨论】:

  • 感谢 Seppe,这是我正在寻找的那种格式,但我希望将密钥反映到 customer_name 和 value 到客户的实际姓名。
猜你喜欢
  • 2017-07-10
  • 2021-11-16
  • 2021-01-03
  • 2020-08-19
  • 2019-02-25
  • 2019-10-12
  • 2021-03-23
  • 1970-01-01
  • 2022-12-05
相关资源
最近更新 更多