我有以下理由。我调用网上商店的多个 API。每个网上商店都有自己的 GraphQLObjectType,如下面的代码所示。
我当前类型的代码:
// Amazon
const AmazonType = new GraphQLObjectType({
name: 'amazon',
fields: () => ( {
isbn: { type : GraphQLString},
title: { type: GraphQLString },
author: { type: GraphQLString},
publisher: { type: GraphQLString},
})
});
// itunes
const ItunesType = new GraphQLObjectType({
name: 'itunes',
fields: () => ( {
isbn: { type: GraphQLString },
title: { type: GraphQLString },
author: { type: GraphQLString },
publisher: { type: GraphQLString },
})
});
// query
const checkStores = new …Run Code Online (Sandbox Code Playgroud) 所以我想从 Gatsby 的 GraphQL 查询一个不是数组的 JSON 文件,但我真的不知道该怎么做。
据我了解gatsby-transformer-json文档 - 它只支持加载数组并通过allFileNameJson模式访问它们。
我的gatsby-config插件(只有这个问题的必要插件):
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'data',
path: `${__dirname}/src/data`
}
},
'gatsby-transformer-json'
Run Code Online (Sandbox Code Playgroud)
然后让我们说src/data我有一个something.json文件,如下所示:
{
"key": "value"
}
Run Code Online (Sandbox Code Playgroud)
现在我想从something.json文件中查询数据,但没有somethingJson我可以查询的模式(尝试使用 Gatsby 的 GraphiQL)。
有人可以指出我做错了什么或者我该如何解决这个问题?
如果我有一个对象:
{"where":{"publishedAt_lt":"2018-01-01"}}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为适合查询参数的字符串?
articles(where: {publishedAt_lt: "2018-01-01"})
Run Code Online (Sandbox Code Playgroud) 我正在使用https://developer.github.com/v4/
我有一个像这样的巨大查询:
query ($login: String!, $first: Int, $after: String) {
user (login: $login){
avatarUrl
login
name,
followers(first: $first, after:$after) {
edges{
cursor
node{
id
name
login
avatarUrl
}
}
totalCount
},
repositories(first: $first) {
edges{
cursor
node{
id
name
}
}
totalCount
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我认为从服务器查询大量数据是不好的。
我有followers和repositories页。所以我认为将这个巨大的查询拆分为小查询更好。
这是小查询:
关注者查询:
query($login: String!, $first: Int, $after: String) {
user(login: $login) {
followers(first: $first, after: $after) {
edges {
cursor
node {
id
name
login
avatarUrl
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用并尝试针对IEX REST APIApollo-Server创建 REST 查询,该查询返回如下所示的数据:
{
"symbol": "AAPL",
"companyName": "Apple Inc.",
"exchange": "Nasdaq Global Select",
"industry": "Computer Hardware",
"website": "http://www.apple.com",
"description": "Apple Inc is an American multinational technology company. It designs, manufactures, and markets mobile communication and media devices, personal computers, and portable digital music players.",
"CEO": "Timothy D. Cook",
"issueType": "cs",
"sector": "Technology",
"tags": [
"Technology",
"Consumer Electronics",
"Computer Hardware"
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用数据源。我typeDefs的resolvers看起来像这样:
const typeDefs = gql`
type Query{
stock(symbol:String): …Run Code Online (Sandbox Code Playgroud) 我该如何解决这个错误?对于这个特定的模式,我不需要任何查询(它们都是突变)。我不能通过null,如果我通过一个空的GraphQLObjectType它会给我错误:
Type Query must define one or more fields.
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过使用一些虚拟数据制作一个简单的 Node 应用程序来学习 Graphql。
当我尝试运行 Node 时出现以下错误
TypeError: Cannot set property 'name' of undefined
at GraphQLObjectType (/Users/BorisGrunwald/Desktop/programmering/Javascript/Node/graphQLServer/server/node_modules/graphql/type/definition.js:480:15)
at Object.<anonymous> (/Users/BorisGrunwald/Desktop/programmering/Javascript/Node/graphQLServer/server/schema/schema.js:22:23)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:657:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/Users/BorisGrunwald/Desktop/programmering/Javascript/Node/graphQLServer/server/app.js:6:20)
Run Code Online (Sandbox Code Playgroud)
这些是我项目中仅有的两个文件:
应用程序.js
const express = require('express');
const graphqlHTTP = require('express-graphql');
const app = express();
const schema = require('./schema/schema');
app.use('/graphql',graphqlHTTP({
schema
}));
app.listen(4000,() => {
console.log('listening on port 4000');
});
Run Code Online (Sandbox Code Playgroud)
架构.js
const graphql = require('graphql');
const { …Run Code Online (Sandbox Code Playgroud) 我正在为我的 graphql 设置测试。在这样做的同时,我意识到有时错误情况下的数据对象输出如下:
{
errors: [...],
data: null
}
Run Code Online (Sandbox Code Playgroud)
有时 :
{
errors: [...],
data: {
updateCity: null
}
}
Run Code Online (Sandbox Code Playgroud)
这些测试是针对突变的。这是两个代码的示例:
解析器案例 1:
updateUser(parent, args, context, info) {
logger.debug('Mutation > updateUser resolver');
return userController.user.update.user(parent, args.userInfo, context, info);
},
Run Code Online (Sandbox Code Playgroud)
模式案例 1:
extend type Mutation {
updateUser(userInfo: UserInfo!): User!
}
Run Code Online (Sandbox Code Playgroud)
控制器案例1:
user: async (parent, args, context, info) => {
try {
logger.debug('User Controller : update User');
await controller.validate(args);
const userModel = new UserModel('member');
if (!(await userModel.findOne(args.id))) errorscb.userInputError('User does not exist');
let id …Run Code Online (Sandbox Code Playgroud) 我正在学习一个教程,其中老师正在String为他的createdAt字段使用类型,并建议如果我们愿意,可以使用自定义标量类型来处理更强类型的DateTime字段,所以我正在尝试这样做。
我收到以下错误: Error: Unknown type "GraphQLDateTime".
这是违规代码:
const { gql } = require('apollo-server')
const { GraphQLDateTime } = require('graphql-iso-date')
module.exports = gql`
type Post {
id: ID!
username: String!
body: String!
createdAt: GraphQLDateTime!
}
type User {
id: ID!
email: String!
token: String!
username: String!
createdAt: GraphQLDateTime!
}
input RegisterInput {
username: String!
password: String!
confirmPassword: String!
email: String!
}
type Query {
getPosts: [Post]
getPost(postId: ID!): Post
}
type Mutation {
register(registerInput: RegisterInput): …Run Code Online (Sandbox Code Playgroud) 我现在正在学习 GraphQL,但遇到了一个我无法解决的问题。
我已将架构中的类型定义为
输入学校{名称:字符串!考试:[科目!]!}输入主题{名称:字符串!标记:数字!}
但是在运行服务器时。我将数据作为 "data": { "name":"varun", "exams":[], }
服务器不会抛出任何验证错误。请建议我解决方案。是否有任何可能的方法在作为空数组通过考试时获得验证错误。
我尝试了替代方法,但在模式级别上没有任何效果。我必须明确进行检查以检查考试字段不应该是空数组。谢谢