使用GraphQLHub,我可以对Hacker news上排名前三的新闻条目运行以下查询:
{
hn {
topStories(limit: 3) {
title
url
timeISO
by {
id
}
}
}
}如何将此查询导出(或转换)为JSON?有没有能做到这一点的npm包?
我看到有graphql-to-json,但看起来您需要向其中传递一个.js文件,而不是像上面这样的原始查询。
发布于 2018-01-31 08:24:52
有很多方法可以做到这一点,但一个简单的实现是使用JS对象来映射查询,然后使用JSON.stringify()进行序列化
如果你能以字符串的形式访问上面的查询,那么你就可以按照我说的做。如果一个查询在JS环境中不是一个字符串,而不是像GraphiQL这样的集成开发环境,那么它就会爆炸。
let QueryStore = {}
const getHNTopStoriesQuery = `
query getHNTopStories {
hn {
topStories(limit: 3) {
title
url
timeISO
by {
id
}
}
}
}
`
const addQuery = (queryToAdd, queries) => {
let key = queryToAdd.trim().split(' ')[1]
let queryEntry = {}
queryEntry[key] = queryToAdd
return Object.assign({}, queries, queryEntry)
}
const queryToGraphiQLQueryString = query => {
let lines = query.trim().split('\n')
let queryLines =lines.slice(1, -1).map(line => line.trim())
return encodeURIComponent(`{${queryLines.join(' ')}}`)
}
// Add Query to Store
QueryStore = addQuery(getHNTopStoriesQuery, QueryStore)
// Get a GraphiQL URI query string of a Query
let qs = queryToGraphiQLQueryString(QueryStore['getHNTopStories'])
console.log(qs)
// Print a prettified JSON of the QueryStore
console.log(JSON.stringify(QueryStore, null, 2))https://stackoverflow.com/questions/48532135
复制相似问题