小编jos*_*our的帖子

AWS AppSync:将参数从父级解析器传递给子级

在AWS AppSync中,似乎不会将在主查询上发送的参数转发给所有子解析器。

type Query {
  article(id: String!, consistentRead: Boolean): Article
  book(id: String!, consistentRead: Boolean): Book
}

type Article {
  title: String!
  id: String!
}

type Book {
  articleIds: [String]!
  articles: [Article]!
  id: String!
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时:

query GetBook {
  book(id: 123, consistentRead: true) {
    articles {
      title
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

获取书的第一个查询在中接收consistentRead参数$context.arguments,但随后的检索文章的查询则没有。($context.arguments为空)

我也尝试过articles(consistentRead: Boolean): [Article]!里面book但是没有运气。

有谁知道在AppSync中是否可以将参数传递给同一请求的所有查询?

graphql aws-appsync appsync-apollo-client

6
推荐指数
2
解决办法
1296
查看次数

动态方法链?

如何在对象上调用方法名称的嵌套哈希?

例如,给定以下哈希:

hash = {:a => {:b => {:c => :d}}}
Run Code Online (Sandbox Code Playgroud)

我想创建一个方法,给定上面的哈希,相当于以下内容:

object.send(:a).send(:b).send(:c).send(:d)
Run Code Online (Sandbox Code Playgroud)

我的想法是,我需要从未知的关联中获取特定属性(此方法未知,但程序员已知).

我希望能够指定一个方法链来以嵌套哈希的形式检索该属性.例如:

hash = {:manufacturer => {:addresses => {:first => :postal_code}}}
car.execute_method_hash(hash)
=> 90210
Run Code Online (Sandbox Code Playgroud)

ruby

5
推荐指数
1
解决办法
1667
查看次数

事件采购/ CQRS阅读模型 - 预测

我在AWS Lambda上运行了一个基于微服务的应用程序.其中两个微服务,即最关键的微服务,使用事件源/ cqrs.

背景:(这也是我组织我的想法)

我正在使用此库 并在DynamoDB中存储事件并在AWS S3中进行投影.

写入部分就像一个魅力:每个命令调用从DynamoDB加载聚合的当前状态(通过处理器运行事件和/或加载缓存聚合),它决定接受或拒绝基于某些业务逻辑的命令,然后写入DynamoDB,KeyConditionExpression: 'aggregateId = :a AND version >= :v'其中版本是为该聚合处理的事件计数.如果存在冲突,则写入失败.对我来说似乎是一个很好的系统!

然后将每个事件广播到SNS(主题名称是服务名称),以便其他服务可以根据需要对事件做出反应.

我真正挣扎的部分是阅读.预测存储在S3中,并使用为每个事件源处理的最后一个commitId进行标记.当读取查询进入时,它从S3加载整个投影状态(对于所有聚合),查询所有较新事件的事件源,计算最新状态(同样,对所有聚合 - 并将更新对象写入S3,如果它是更新),并根据查询参数返回状态的相关部分.

我的问题:(或其中之一)

我认为我做错了.

我的大多数预测只按重要属性分组ID,因此文件保持相对较小.但我还需要一种方法来检索单个聚合.使用投影看起来很疯狂,因为我需要每次加载整个状态(即每个预测的聚合)将新事件应用于该状态,然后检索我想要的记录(它甚至可能没有改变).

这就是我现在正在做的,它表现良好(<100k记录),但我无法想象它会持续更长时间.

另一个问题是查询.我需要为我需要查询的每个属性构建一个投影映射值以匹配aggregateIds!必须有更好的方法!

无论我如何看待这个问题,投影总是需要整个当前状态+任何新事件才能返回一个没有改变的单个记录.

domain-driven-design cqrs event-sourcing microservices

5
推荐指数
2
解决办法
928
查看次数