- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个DynamoDB表,其中包含客户端所需的所有数据,但是,我想对客户端接收的数据进行整形以减少客户端的操作。
我的架构:
type StateCounty {
id: ID!
StateName: String
CountyName: String
FIPSST: Int
FIPSCNTY: Int
Penetration: String
Date: String
}
type Query {
getStateCountybyState(StateName: String): StateCountyConnection
}
query getStateCountybyState {
getStateCountybyState (StateName: "Delaware") {
items {
StateName
CountyName
Date
}
}
}
{
"StateName": "Delaware",
"CountyName": "Kent",
"Date": "02-01-2017"
},
{
"StateName": "Delaware",
"CountyName": "Sussex",
"Date": "02-01-2016"
},
{
"StateName": "Delaware",
"CountyName": "New Castle",
"Date": "02-01-2018"
}
{
"StateName": "Delaware" {
{ "CountyName": "Kent",
"Date": "02-01-2017"
},
{
"CountyName": "Sussex",
"Date": "02-01-2016"
},
{
"CountyName": "New Castle",
"Date": "02-01-2018"
}
}
}
type StateCounty {
id: ID!
StateName: String
CountyName: String
FIPSST: Int
FIPSCNTY: Int
Penetration: String
Date: String
GroupCounty: [StateCountyGroup]
}
query getStateCountybyState {
getStateCountybyState (StateName: "Delaware") {
items {
StateName
CountyName
Date
GroupCounty: [StateCountyGroup]
}
}
}
{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
"expression" : "StateName = :StateName",
"expressionValues" : {
":StateName" : { "S" : "${context.arguments.StateName}" },
}
},
"index" : "StateName-index-copy",
"select" : "ALL_ATTRIBUTES",
}
"message": "Unable to convert set($myresponse = {\n \"Delaware\":
[{SSA=8000, Eligibles=32295, FIPS=10001, StateName=Delaware, SSACNTY=0,
Date=02-01-2016, CountyName=Kent, Enrolled=3066, Penetration=0.0949,
FIPSCNTY=1, FIPSST=10, SSAST=8, id=6865},
{SSA=8010, Eligibles=91332, FIPS=10003, StateName=Delaware, SSACNTY=10, Date=02-01-2016, CountyName=New Castle, Enrolled=10322, Penetration=0.113, FIPSCNTY=3, FIPSST=10, SSAST=8, id=6866},
{SSA=0, Eligibles=10, FIPS=10, StateName=Delaware, SSACNTY=0, Date=02-01-2018, CountyName=Pending County Designation, Enrolled=0, Penetration=0, FIPSCNTY=0, FIPSST=10, SSAST=0, id=325},
{SSA=8000, Eligibles=33371, FIPS=10001, StateName=Delaware, SSACNTY=0, Date=02-01-2017, CountyName=Kent, Enrolled=3603, Penetration=0.108, FIPSCNTY=1, FIPSST=10, SSAST=8, id=3598},
{SSA=8020, Eligibles=58897, FIPS=10005, StateName=Delaware, SSACNTY=20, Date=02-01-2016, CountyName=Sussex, Enrolled=3760, Penetration=0.0638, FIPSCNTY=5, FIPSST=10, SSAST=8, id=6867}) \nnull\n\n to class java.lang.Object."
}
]
}
最佳答案
通过阅读以上内容,听起来您的原始查询返回的是您想要的正确结果,但返回的格式不是您希望的,因为您希望“ StateName”是一个顶级JSON键,其值为您作为参数传入的状态的JSON对象。准确吗?如果是这样,那为什么不使用已经有效但使用不同响应模板的相同查询。就像是:
#set($myresponse = {
"$ctx.args.StateName": $ctx.result.items
})
$util.toJson($myresponse)
$myresponse
与上面的示例不完全相同,因为
"stateName" : "Delaware" { ... }
的示例不是完全有效的JSON,因此我不想假设什么是好的结构,但是重点仍然是如果您已经从查询中获得了正确的结果,我将尝试更改GraphQL结果的结构。
"filter"
应用于您的查询结果。如果是这种情况,那么您需要这样的事情:
{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
"expression" : "StateName = :StateName",
"expressionValues" : {
":StateName" : { "S" : "${context.arguments.StateName}" },
}
},
"index" : "StateName-index-copy",
"select" : "ALL_ATTRIBUTES",
"filter" : {
"expression" : "#population >= :population",
"expressionNames" : {
"#population" : "population"
},
"expressionValues" : {
":population" : $util.dynamodb.toDynamoDBJson($ctx.args.population)
}
}
}
type State {
id: ID!
population: String!
governor: String!
}
type Query {
allStates: [State]
}
query {
allStates{
id
population
}
}
[State]
以匹配模板转换正在执行的
State
,如下所示:
type State {
StateName: String
}
type Query {
allStates: State
}
#set($convert = {"StateName" : $ctx.result.items })
$util.toJson($convert)
query {
allStates{
StateName
}
}
{
"data": {
"allStates": {
"StateName": "[{id=1, population=10000, governor=John Smith}]"
}
}
}
StateName
,我想从您最初的问题中考虑,通过组合响应中的记录以进行一些优化以及一些潜在的过滤,您希望做更多的事情。一种实现方法是创建一个数组(或者您可以创建一个映射{})并根据某些条件填充它。例如,修改查询以将
StateName
作为参数:
type Query {
allStates(StateName: String!): Post
}
#foreach
和
#if()
条件,然后仅在响应中的项目符合您所请求的状态时才调用
.add()
:
#set($convert = {"StateName" : [] })
#foreach($item in $ctx.result.items)
#if($item["StateName"]=="$ctx.args.StateName")
$util.qr($convert.get("StateName").add("$item"))
#end
#end
$util.toJson($convert)
query {
allStates(StateName:"Texas"){
StateName
}
}
StateName
。通过在GraphQL类型中列出可能的状态,可以引入更多的灵活性:
type State {
StateName: String
Seattle: String
Texas: String
}
#set($convert = {"$ctx.args.StateName" : [] })
#foreach($item in $ctx.result.items)
#if($item["StateName"]=="$ctx.args.StateName")
$util.qr($convert.get("$ctx.args.StateName").add("$item"))
#end
#end
$util.toJson($convert)
query {
allPosts(StateName:"Seattle"){
Seattle
}
}
Seattle
作为参数传递,但要求返回
Texas
:
query {
allPosts(StateName:"Seattle"){
Texas
}
}
Seattle: [...]
,但您将
Texas
作为选择集,因此该选项不起作用。
关于amazon-dynamodb - AWS AppSync查询以成形响应数据(类似于SQL中的分组依据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722910/
谁能告诉我: aws-sdk/clients/appsync , 和 aws-appsync 根据文档,aws-sdk/clients/appsync使用是因为只包括 aws-sdk当我们只需要 ap
input CarInput{ name: String brand: String } type Car{ id: ID name: String
我花了最后一天尝试 AWS AppSync我对订阅可以做什么有点失望。 在我看来 AppSync subscription 的当前状态适用于您有一个项目列表并且您希望它在所有客户端上同步的用例。 与
似乎 AppSync 项目只能配置一种授权类型( API_KEY 、 AWS_IAM 等)。我正在使用 AMAZON_COGNITO_USER_POOLS作为我的主要类型,但我也有一个(Node.js
阅读 AppSync 文档,似乎 AppSync 订阅只能通过将订阅附加到突变来工作。 但是如果我需要一个独立于突变的订阅怎么办?这是在某些内部状态更改时触发的?例如,是否有新资源可用? 这在 App
在我正在使用的 appsync api 的 graphQl 架构中,我想根据他们所属的组来限制我的用户操作。 根据文档,添加行 aws_auth(cognito_groups: ["Admins"])
有没有办法将 GraphQL 类型描述添加到 AppSync 使用的 GraphQL 模式? ApolloServer 和 graphql-js 通过模式文件中的注释支持这一点(参见 here )。
我将 AppSync 与 aurora 无服务器解析器一起使用。我想知道是否可以在 RDS 解析器中运行事务。 我可以使用数据 api 但在 lambda 函数解析器中运行事务。 最佳答案 您可以编写
我想避免在我的 vtl 模板中重复某些声明,并在 vtl 解析器之间共享它们。 假设我在 mapping_templates/shared.vtl 中有一个示例字典 #set($sample_ma
我对 GraphQL 相当陌生,并且一直在为 GraphQL API 使用 AWS AppSync 服务。我使用 AWS Cognito 进行身份验证/授权、一些 Lambda 函数以及连接到我的 A
我要完成的任务: 我在 AppSync Web 控制台上编辑了一个 amplify + AppSync 项目,我想将它拉到我的本地机器上。 我做了什么: 我通过执行三个命令使用 Amplify CLI
目前 AWS AppSync 只能订阅突变,这是获得实时更新的唯一途径。但是,如果对 AppSync 之外的支持数据进行了更改(例如来自 Lambda 函数的 DynamoDB 更新),那么我们如何通
AWS Appsync 文档似乎使用 $util.和 $utils.可互换。它们实际上是不同的,还是同一事物的同义词? 最好的例子是 the resolver transformation helpe
我正在处理一个需要以图像形式上传附件的新项目。我正在使用 DynamoDB 和 AppSync API 从数据库中插入和检索数据。由于我们不熟悉 AppSync 以及我们为应用程序使用的所有亚马逊服务
我正在尝试查询特定日期范围内的所有项目(具有 AWS DateTime 的 CreatedAt 和 UpdatedAt 字段)。例如,过去 48 小时。 例如,使用这个架构: type Note @m
我想让我的 AWS AppSync 应用程序准备好为移动应用程序(Android 和 iOS)推送通知我有一个 GraphQL 模式和 Lambda 作为数据源。问题是我不知道最好的解决方案是什么。
我尝试包括在以下graphql模式中定义的嵌套类型: type User { id: String! posts: [Post] } type Post { id: String! } t
我遇到了 React/Apollo/AppSync 的问题,突变触发了两次(或多次)。我有一个 React 应用程序,它有一个由通常的 UI 按钮 onClick 触发的更新突变。 { that.t
我遇到了 React/Apollo/AppSync 的问题,突变触发了两次(或多次)。我有一个 React 应用程序,它有一个由通常的 UI 按钮 onClick 触发的更新突变。 { that.t
我正在尝试设置 graphql 订阅,但收到错误: Unhandled GraphQL subscription error Error: Error during subscription hand
我是一名优秀的程序员,十分优秀!