graphql API search for query"/>
((node js)graphql API search for query
我一直在为我的Discord机器人处理这个graphql API命令,我终于有它从站点收集我需要的信息。我似乎无法弄清楚如何将搜索范围缩小到单个查询/参数,而不是显示来自API的所有信息。
代码:
const Discord = require('discord.js');
const fetch = require('node-fetch');
const querystring = require('querystring');
const util = require('util')
module.exports = {
name: 'dose',
definition: 'find info on drugs',
},
module.exports.execute = async(message, args) => {
const query = querystring.stringify({
term: args.join(' ')
});
let bruh;
fetch('', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
//query: "{ substances { name effects dose { name } }}}"
//query: "{substances(offset:0, limit:10) {name effects {name}}}"
query: "query substances ($effect: String, $query: String, $chemicalClass: String, $psychoactiveClass: String, $limit: Int, $offset: Int) {\n substances (effect: $effect, query: $query, chemicalClass: $chemicalClass, psychoactiveClass: $psychoactiveClass, limit: $limit, offset: $offset) {\n name\n url\n featured\n summary\n addictionPotential\n toxicity\n crossTolerances\n }\n}",
variables: {
"effect": "",
"query": "",
"chemicalClass": "",
"psychoactiveClass": "",
"limit": 4,
"offset": 0
},
other: '{"query":"query effects_by_substance ($substance: String, $limit: Int, $offset: Int) {\n effects_by_substance (substance: $substance, limit: $limit, offset: $offset) {\n name\n url\n limit\n offset\n }\n}","variables":{"substance":"","limit":0,"offset":0}}'
})
}).then(res => res.json()).then(json => {
console.log(JSON.stringify(json.data, null, 4));
message.channel.send("```" + JSON.stringify(json.data, null, 4) + "```");
let info = json.data + json.extensions;
});
}
回答如下:您可以使用json.data
并使用forEach()
遍历它,然后,如果您只想要数据的特定部分,则可以添加if
语句。我还建议将所有内容都嵌入,使其看起来更好。
如果要使用所有数据:
const embed = new MessageEmbed()
json.data.forEach((data, value) => {
embed.addField(data, value)
})
message.channel.send(embed)
或者,如果您想获得特定零件:
const embed = new MessageEmbed()
json.data.forEach((data, value) => {
if (data === 'chemicalClass') embed.addField(data, value)
if (data === 'psychoactiveClass') embed.addField(data, value)
})
message.channel.send(embed)
更多推荐
((node js)graphql API search for query
发布评论