当前位置: 首页 > 面试题库 >

Google数据存储中的唯一电子邮件

白赞
2023-03-14
问题内容

我有一个User包含Email字段的实体。该User实体ID是ULID,因为我想允许用户更改他们的电子邮件地址,但我想确保电子邮件地址是两个独特的CREATEUPDATE

我正在使用数据存储区交易。这是一个代码片段:

ctx := context.Background()
k := datastore.NameKey("User", user.ID, nil)
_, err := client.RunInTransaction(ctx, func(t *datastore.Transaction) error {
    // other stuff that needs to be in transaction
    _, err = t.Put(k, user)
    return err
})

return err

Email字段已建立索引。User作为交易的一部分,有什么方法可以在实体中搜索当前用户的电子邮件地址?

*datastore.Transaction没有GetAll方法,所以我无法运行这样的查询:

datastore.NewQuery("User").Filter("Email =", user.Email)

恐怕使用

client.GetAll(ctx, q, nil)

不能保证交易内的隔离。


问题答案:

简短的回答是“否”,除非您要查询特定的实体组,否则您不能将查询用作事务的一部分。全局查询始终总是一致的。但是,将所有内容放在单个实体组中可能会极大地限制写入吞吐量。

解决方法是您可以使用另一种带有将电子邮件地址映射到用户的实体的实体。然后,您可以在事务中检查电子邮件实体,如果它不存在或指向错误的位置,则将电子邮件实体和用户实体都设置为单个事务。



 类似资料:
  • 如何在数据库中存储该电子邮件的唯一ID。 我尝试了$概述=imap_fetch_overview($inbox,$email_number,0);我收到了一堆数字,但问题是当其中一封电子邮件被删除时,数字会发生变化。 如何正确存储?MD5消息还是什么? 基本上,我试图在我的个人网络应用程序上接收电子邮件,在那里我可以管理和访问我自己的电子邮件。它使用imap调用gmail。 无论如何,我可以在哪里

  • 问题内容: 我正在尝试使用他们的电子邮件地址在appengine数据存储区中查找用户。我正在使用Go。 此代码找不到任何用户。 如果我更改查询以使用“ Id”属性查找用户,则可以正常工作。 我已经确认“ AccountEmail”的属性名称和值正确。“ AccountEmail”它也被索引。 为了使查询正常工作,是否需要使用电子邮件地址进行某些特殊格式设置? 问题答案: 为了通过电子邮件()查找用

  • 我很想知道,当使用Axon框架来验证一个电子邮件字段对于联系人聚合的一组电子邮件是唯一的时,最佳实践方法是什么。 示例设置 null 2.在单独的持久层中进行验证 这种方法引入了一个新的持久层,它将验证聚合内部的唯一性。 在ContactCreateCommand的ContactAggregate命令处理程序中,我们可以针对这个持久层发出一个查询(例如,postgres中的一个表,上面有唯一的索引

  • 我正在使用Google表单将多条消息合并到一个每日电子邮件中,使用脚本和每日定时触发器发送(代码从这里复制,下面是我的版本)。 例如,一个电子邮件地址是abc@example.co.uk,他们收到了电子邮件,但在我的收件箱(xyz@example.co.uk)中是发送到abc@example.co.uk的电子邮件,但不是转发的消息或回复。 有什么办法阻止这一切吗?

  • 我想使用Google表单填充Google电子表格。其中一个字段是电子邮件地址,我需要对照我们组织的电子邮件列表来验证这一点--换句话说,强制人们使用有效的和现有的电子邮件地址。 我们的组织使用谷歌应用程序。该表单将由在我们组织中的用户创建,并且只有来自我们组织/域的电子邮件地址才被认为是有效的。

  • 我正在尝试创建一个脚本,为每个包含今天日期的单元格发送电子邮件。以下是我目前掌握的情况: 以下是我对脚本工作逻辑的设想: estimatedReturnDate最初获取F列中的第一个单元格,这是一个日期列表。 TodayDate获取单元格S1,其中包含今天的日期。 然后,for循环遍历工作表的所有行,并检查是否估计了返回日期=今天日期。如果是,将发送一封电子邮件,其中包含与今天日期匹配的行号。 然