amazon-web-services - AWS Amplify 数据存储查询日期
问题描述
所以我想尝试一下 AWS Amplify,因为我开始的新项目将开始我们的简单但会变得更加复杂,因此我不想走 Firebase 路线。所以我设置了 Auth 并创建了我的数据模型并将 Amplify Lib 添加到我的 Angular 前端。我可以登录并读取我的数据。到目前为止,一切都很好。
现在我想对我的数据进行基本查询。对于诸如名称之类的内容,基于基本字符串字段的过滤很容易:
const members = await DataStore.query(Member, m => m.firstName("eq", "Steve"));
我似乎找不到任何关于如何查询日期等内容的文档?
我有一个名为 Event 的模型,您将如何为事件进行典型的创建(注意字段StartTimestamp
和EndTimestamp
):
await DataStore.save(
new Event({
"Title": "Lorem ipsum dolor sit amet",
"StartTimestamp": "1970-01-01T12:30:23.999ZM",
"EndTimestamp": "1970-01-01T12:30:23.999ZM",
"Notes": "Lorem ipsum dolor sit amet"
})
);
StartTimestamp
和都是EndTimestamp
类型AWSDateTime
:
在为事件提取数据时,我看到 JS 中的类型是字符串。那么如何查询日期呢?字符串比较无济于事。我知道 AWS Amplify 的底层数据库是 GraphQL,查询日期很容易,但我仍然受限于 Amplify DataStore Lib 给我的工作。
任何建议将不胜感激。
解决方案
我只想添加一些有关 AWS 和日期字段的附加信息。
- AWStimestamp 是一个整数值,表示 1970-01-01-T00:00Z 之前或之后的秒数
- AWSDateTime 是一个字符串字段,将时间戳表示为 ISO 8601 格式的字符串。
AWS 类型参考中的更多信息
两者都有其用途。
- AWStimestamp 在数据库中占用的空间更少。
- AWSDateTime 在调试时易于处理,因为它是人类可读的
- 都按字典顺序正确排序
- 两者都支持使用“gt”、“lt”、“eq”的查询谓词,AWStimestamp 将使用数字比较,AWSDateTime 将使用字符串比较
如上所述,只需将变量日期值转换为 ISO 8601 格式的字符串表示。
推荐阅读
- python-3.x - Google Cloud Bigquery 库错误
- .net-core - dotnet进程下的wmi性能适配器
- java - Android:如何从 strings.xml 获取大字符串数组?
- java - 在java中使用准备好的语句时发现sql注入
- facebook - 作为我的应用审核的一部分,需要进行业务验证
- r - R - 使用多个标识符匹配值(当查找 ID 的顺序是随机时)
- mysql - 在从环回模型自动迁移之前,您必须在 mysql 中手动创建数据库吗?
- java - JNA 本机代码有时会失败并显示错误代码 127:“找不到指定的过程”
- mysql - MySQL - 查找来自多个供应商的商品的最新、最优惠价格
- android - Google Voice Actions 查询的语言