Couchdb概念问题

时间:2013-05-18 23:35:01

标签: caching couchdb updating

据我所知,用couchdb更新任何对象。我必须将整个对象发回,因为它实际上是“插入”同一个id的新修订版。这一切都很整洁,效果很好。

但后来我遇到了问题,我不知道该怎么处理。我有一个无法完全发送给我的用户的对象。我必须隐藏某些信息,例如密码哈希。

将数据发送到客户端,也会发送修订。现在当我尝试更新我的对象时,我遇到了一个问题。由于缺少某些数据,更新将删除用户遗漏的属性。

那就是说,我最简单的方法是从couchdb获取对象,检查id和rev是否匹配。如果匹配,则将对象与缺少的属性合并。它会很好用,我也支持删除属性。

然后使用这种技术,我可以将我的对象添加到缓存中,这将减少从数据库中查询频繁对象的时间。如果可以更新对象,则清除该id的缓存。如果对象较新,那么我将不得不处理错误或合并对象。

有没有更好的“好方法”来处理这个问题?

修改

在夜间考虑之后,我想我找到了一个更好的解决方案。而不是在我的个人资料中使用我的用户名和密码。我将识别对象与使用配置文件分开。

换句话说,我必须尽可能地分开对象以保持隔离...在正面,我可以为一个配置文件添加多个身份验证,而不会弄乱配置文件本身。我可以在不返回任何秘密对象的情况下返回配置文件和任

它会使插入逻辑复杂化,但它应该很容易......

  1. 使用uuid api“_uuids”
  2. 从couchdb获取1个ID
  3. 使用该uuid
  4. 插入密码验证(用户名,密码,profile_id)
  5. 如果成功,请使用我们在1
  6. 获得的uuid插入配置文件

    如果发生任何错误,请回滚并告诉用户出现了什么问题。

    此方法的优点还在于我可以使用配置文件ID为oauth2添加access_token,逻辑与密码几乎相同,auth类型会有所不同,但任何auth类型应该几乎相同。

1 个答案:

答案 0 :(得分:1)

是的,从配置文件中提取秘密内容听起来就像是要走的路。