2013-05-18 46 views
1

据我所知,用couchdb更新任何对象。我必须发回整个对象,因为它实际上是为同一个id“插入”一个新的修订版本。这一切都很整齐,工作得很好。Couchdb概念性问题

但后来我有一个问题,我不是很确定,我应该如何处理。我有一个对象无法完全发送给我的用户。我必须隐藏某些信息,如密码哈希。

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

这么说,我有最简单的方法是从CouchDB的获取对象,检查ID和rev匹配。如果匹配,则将该对象与缺少的属性合并。它会工作得很好,我也可以支持删除属性。

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

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

编辑

在夜间思考之后,我想我找到了很多更好的解决方案。而不是在我的个人资料中输入我的用户名和密码。我将从使用配置文件中分离标识对象。

换句话说,我必须尽可能让事情变得孤立分割的对象......从积极的一面,我可以为一个配置文件添加多个认证,而不与型材本身搞乱。我可以返回配置文件和任何必要的东西而不返回任何秘密对象

它将复杂一点插入的逻辑,但它应该是很容易的......

  1. 使用UUID API“_uuids”
  2. 插入密码认证从CouchDB的送一个ID(用户名,密码,使用UUID
  3. 如果成功PROFILE_ID),使用我们在1

了如果有什么错误发生,回滚和告诉什么是错的用户的uuid插入轮廓。

此方法的好处是,我可以使用配置文件ID为oauth2添加access_token,逻辑将与密码几乎相同,auth类型将有所不同,但任何auth类型都应该几乎相同。

回答

1

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

+0

我得到它的工作和阅读,有一个API来获取的UUID:'服务器/ _uuids'这样我可以插入我的身份验证凭有效身份证之前,我甚至插入轮廓。我曾与mongodb合作过,就像过去一样。用couchdb做些事情迫使我重新思考如何构建数据。 –