ElectroDB 类型安全的 DynamoDB 库开源项目

我要开发同款
白开水不加糖2021年11月30日
103阅读
开发技术JavaScriptTypeScript
所属分类常用工具包、程序开发
授权协议MIT

作品详情

ElectroDB是一个DynamoDB库,以方便使用复杂的分层关系建模和实现单表设计,同时保持你的查询代码可读性。

特性:

与现有表一起使用-ElectroDB简化了DocumentClient参数的构建,因此你可以将其与现有表/数据一起使用。属性架构强制-为你的实体定义一个具有强制属性验证、默认值、类型、别名等的模式。轻松编写分层访问模式-为你的索引规划和设计分层键,以增加你可能的访问模式。单表实体隔离-使用 ElectroDB 创建的实体在使用单表时不会与其他实体发生冲突。简化的排序键条件查询-通过轻松构建组合键来编写高效的排序键查询。简化的 FilterComposition-轻松创建DynamoDB查询复杂可读的过滤器,而无需担心ExpressionAttributeNames、ExpressionAttributeValues以及FilterExpressions的实现。简化的UpdateExpressionComposition-轻松制作类型安全的更新操作,而无需格式化繁琐的ExpressionAttributeNames、ExpressionAttributeValues和UpdateExpressions。跨实体轻松查询-定义“集合”以创建强大/惯用的查询,这些查询在单个请求中返回多个实体。自动索引选择-使用.find()或.match()方法根据定义的排序键结构动态有效地查询。简化的分页API -.page()用于轻松地对结果集进行分页。与你现有的解决方案一起使用-如果你已经在使用DynamoDB,并且想要使用ElectroDB,请使用自定义复合属性模板来利用您现有的密钥结构。TypeScript支持-现在在Beta版中为实体和服务提供强大的TypeScript支持。通过查询终端直接-直接从命令行对你的实体、服务、模型执行查询。StandUpRestServerforEntity -建立一个RESTServer来与你的实体、服务、模型进行交互,以便更容易进行原型设计。Turnthis

tasks.patch({team:"core",task:"45-662",project:"backend"}).set({status:"open"}).add({points:5}).append({comments:[{user:"janet",body:"Thisseemshalf-baked."}]}).where(({status},{eq})=>eq(status,"in-progress")).go();IntoThis

{"UpdateExpression":"SET#status=:status_u0,#points=#points+:points_u0,#comments=list_append(#comments,:comments_u0),#updatedAt=:updatedAt_u0,#gsi1sk=:gsi1sk_u0","ExpressionAttributeNames":{"#status":"status","#points":"points","#comments":"comments","#updatedAt":"updatedAt","#gsi1sk":"gsi1sk"},"ExpressionAttributeValues":{":status0":"in-progress",":status_u0":"open",":points_u0":5,":comments_u0":[{"user":"janet","body":"Thisseemshalf-baked."}],":updatedAt_u0":1630977029015,":gsi1sk_u0":"$assignments#tasks_1#status_open"},"TableName":"your_table_name","Key":{"pk":"$taskapp#team_core","sk":"$tasks_1#project_backend#task_45-662"},"ConditionExpression":"attribute_exists(pk)ANDattribute_exists(sk)AND#status=:status0"}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论