谁有经验将两者结合使用?
我想一个将firebase调用放在相关字段的解析器中,将一些变量从组件props传递到查询的参数中.
让我们知道您的想法!
我开始使用它,relay-starter-kit并通过Relay和GraphQL文档工作.但是有很多领域是无法解释和神秘的.
说真的,我到处都阅读了很多关于所有这些事情的文件,但对以下问题找不到任何令人满意的解释:
这个是来做什么的?我把日志记录但它甚至根本没有被调用:
var {nodeInterface, nodeField} = nodeDefinitions(
(globalId) => {
var {type, id} = fromGlobalId(globalId);
if (type === 'User') {
return getUser(id);
} else if (type === 'Widget') {
return getWidget(id);
} else {
return null;
}
},
(obj) => {
if (obj instanceof User) {
return userType;
} else if (obj instanceof Widget) {
return widgetType;
} else {
return null;
}
}
);
Run Code Online (Sandbox Code Playgroud)
这个的实际效果是什么:
interfaces: [nodeInterface],
Run Code Online (Sandbox Code Playgroud)
也许与此相关,node这里的领域是做什么的:
var queryType = new GraphQLObjectType({
name: …Run Code Online (Sandbox Code Playgroud) 如何使用以下查询阻止对Apollo服务器的嵌套攻击:
{
authors {
firstName
posts {
title
author {
firstName
posts{
title
author {
firstName
posts {
title
[n author]
[n post]
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,如何限制查询中提交的递归数量?这可能是潜在的服务器漏洞.
使用REST,我们可以使用Swagger,RAML或其他技术来记录我们的API并生成HTML文档,我们的消费者可以在不需要与服务器交互的情况下阅读这些文档.
为GraphQL做一些类似的事情吗?有没有办法生成资源和属性的文档?
翻翻GraphQL文件自定义标量类型(我想创建自己的日期类型),我不知道有什么区别parseValue和parseLiteral是.
http://graphql.org/graphql-js/type/#graphqlscalartype
该文档似乎没有包含函数应该执行的任何描述.
有人能让我知道要求是什么吗?我假设serialize必须将标量序列化为字符串.那是对的吗?我假设parseLiteral是该字符串的反序列化类型?在我的例子中是一个日期类型.但是,在示例中 - serialize和parseValue是相同的函数 - 这表明它不是一个简单的反序列化方法.
目前尚不清楚何时使用GraphQLID而不是GraphQLInt.
请考虑以下架构:
type User {
id: Int!
firstName: String!
lastName: String!
}
type Query {
user (id: ID!): User
}
Run Code Online (Sandbox Code Playgroud)
如果是Query.user,使用GraphQLID或似乎没有区别GraphQLInt.
在这种情况下User.id,使用GraphQLID将输入转换为字符串.使用GraphQLInt将确保输入是整数.
这使得查询和类型系统不一致.
该graphql-JS 规范只是说:
GraphQLScalarType代表ID的A.
这是一个实现细节(例如,GraphQLID当GraphQL客户端可以转换为整数时),还是期望它ID始终是graphql中的字符串?
我使用Express-graphql中间件.我在正文行中发送以下请求:
POST /graphql HTTP/1.1
Host: local:8083
Content-Type: application/graphql
Cache-Control: no-cache
Postman-Token: d71a7ea9-5502-d5fe-2e36-0ae49c635a29
{
testing {
pass(id: 1) {
idn
}
}
}
Run Code Online (Sandbox Code Playgroud)
并有错误
{
"errors": [
{
"message": "Must provide query string."
}
]
}
Run Code Online (Sandbox Code Playgroud)
在graphql中,我可以在URL中发送更新.
URL字符串太短.我必须发送更新模型
mutation {
update(id: 2, x1: "zazaza", x2: "zazaza", x3: "zazaza" ...(more more fields)...) {
idn
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它必须在请求机构.我如何发送'更新'查询或我做错了?
我目前正在尝试使用NodeJS的GraphQL,我不知道,为什么以下查询会出现此错误:
{
library{
name,
user {
name
email
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道如果type我的resolveLibrary是正确的,因为在任何例子,我看了一下他们使用new GraphQL.GraphQLList(),但对我来说我真想回到一个用户对象,而不是用户的数组.
我的代码:
const GraphQL = require('graphql');
const DB = require('../database/db');
const user = require('./user').type;
const library = new GraphQL.GraphQLObjectType({
name: 'library',
description: `This represents a user's library`,
fields: () => {
return {
name: {
type: GraphQL.GraphQLString,
resolve(library) {
return library.name;
}
},
user: {
type: user,
resolve(library) {
console.log(library.user);
return library.user
}
}
}
}
});
const resolveLibrary = {
type: …Run Code Online (Sandbox Code Playgroud) 我有一些我想用作输入和输出的对象类型 - 例如货币类型或预订类型.
如何定义我的模式以使其具有支持输入和输出的类型 - 如果我不需要,我不想重复代码.我也不想创建重复的输入类型的东西,如货币和状态枚举.
export const ReservationInputType = new InputObjectType({
name: 'Reservation',
fields: {
hotelId: { type: IntType },
rooms: { type: new List(RoomType) },
totalCost: { type: new NonNull(CurrencyType) },
status: { type: new NonNull(ReservationStatusType) },
},
});
export const ReservationType = new ObjectType({
name: 'Reservation',
fields: {
hotelId: { type: IntType },
rooms: { type: new List(RoomType) },
totalCost: { type: new NonNull(CurrencyType) },
status: { type: new NonNull(ReservationStatusType) },
},
});
Run Code Online (Sandbox Code Playgroud) 我正在开发使用 GraphQL 的应用程序。我正在使用urqlGraphQL 客户端并且到目前为止真的很喜欢它。什么是使用的优点阿波罗/继电器过urlql?