【发布时间】: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