gpt4 book ai didi

node.js - 带有 RESTful 的 GraphQL 返回空响应

转载 作者:搜寻专家 更新时间:2023-11-01 00:35:59 24 4
gpt4 key购买 nike

我正在将 GraphQLREST 端点连接,我确认无论何时调用 http://localhost:3001/graphql 都是点击 REST 端点,它返回 JSON 响应到 GraphQL 服务器,但我从 GraphQL 得到一个空响应服务器到 GUI 如下:

{
"data": {
"merchant": {
"id": null
}
}
}

查询(手动解码):

http://localhost:3001/graphql?query={
merchant(id: 1) {
id
}
}

下面是我的 GraphQLObjectType 的样子:

const MerchantType = new GraphQLObjectType({
name: 'Merchant',
description: 'Merchant details',
fields : () => ({
id : {
type: GraphQLString // ,
// resolve: merchant => merchant.id
},
email: {type: GraphQLString}, // same name as field in REST response, so resolver is not requested
mobile: {type: GraphQLString}
})
});


const QueryType = new GraphQLObjectType({
name: 'Query',
description: 'The root of all... queries',
fields: () => ({
merchant: {
type: merchant.MerchantType,
args: {
id: {type: new GraphQLNonNull(GraphQLID)},
},
resolve: (root, args) => rest.fetchResponseByURL(`merchant/${args.id}/`)
},
}),
});

来自 REST 端点的响应(我也尝试使用 JSON 中的单个对象而不是 JSON 数组):

[
{
"merchant": {
"id": "1",
"email": "a@b.com",
"mobile": "1234567890"
}
}
]

使用 node-fetch 的 REST 调用

function fetchResponseByURL(relativeURL) {

return fetch(`${config.BASE_URL}${relativeURL}`, {
method: 'GET',
headers: {
Accept: 'application/json',
}
})
.then(response => {
if (response.ok) {
return response.json();
}
})
.catch(error => { console.log('request failed', error); });

}

const rest = {
fetchResponseByURL
}

export default rest

GitHub:https://github.com/vishrantgupta/graphql
JSON 端点(虚拟):https://api.myjson.com/bins/8lwqk

编辑: 添加 node.js 标签,promise 对象可能有问题。

最佳答案

您的 fetchResponseByURL 函数获取空字符串。

我认为主要问题是您使用了错误的函数来获取您的 JSON 字符串,请尝试安装 request-promise 并使用它来获取您的 JSON 字符串。

https://github.com/request/request-promise#readme

有点像

var rp = require('request-promise');
function fetchResponseByURL(relativeURL) {
return rp('https://api.myjson.com/bins/8lwqk')
.then((html) => {
const data = JSON.parse(html)
return data.merchant
})
.catch((err) => console.error(err));
// .catch(error => { console.log('request failed', error); });

}

关于node.js - 带有 RESTful 的 GraphQL 返回空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com