CouchDB 覆盖基础 JSON 文档
CouchDB override a base JSON document
CouchDB 中是否有用于创建 JSON 文档的标准策略(或商定的最佳实践):
- 基于另一个文档。
- 包含少量 JSON 表示覆盖原始文档的属性。
?
收到请求后,CouchDB 将计算结果 JSON 应用覆盖的文档,并将其作为响应 return。用户不需要知道或关心它是一个复合文档。
这是一个很好的问题,因为您询问的是可能性和最佳实践。答案是 - 这取决于 ;-)
通常您可以使用 CouchDB _list 来完成。例如,您从 _list 所基于的 _view 中获得两个文档,计算复合文档并响应它。缺点是这种服务器端计算与性能非常相关。当您的复合文档将被请求时,请不要使用它。每个用户会话。但是当你的用例是 smth 时,例如每晚一次来自另一项服务的请求应该没问题。
CouchDB 会爱上您,当您采用另一种方法导致复合文档已准备好响应存储在索引中的情况时。
如果您想完全按照应有的方式存储复合文档,可以使用 CouchDB _update 处理程序。您在有效负载中获取文档的自定义属性,并从数据库中获取默认文档,将所有内容合并到复合文档中并将其存储在唯一 ID 下(或覆盖默认文档)。
最后但同样重要的是,您还可以使用两种基于 CouchDB _view 的方法。两者都不会提供复合文档,而是在一个请求中提供默认文档和自定义覆盖。第一种方法是使用多部分键构建一个视图,该键将父文档(默认数据)和子文档(覆盖)组合在一起 - 第二种方法是使用链接数据创建视图:将自定义设置作为视图行的值发出和用默认文档的 _id 覆盖视图行 _id。当使用查询参数 ?include_docs=true
请求视图行时,默认数据和自定义覆盖将包含在结果中。
CouchDB 中是否有用于创建 JSON 文档的标准策略(或商定的最佳实践):
- 基于另一个文档。
- 包含少量 JSON 表示覆盖原始文档的属性。
?
收到请求后,CouchDB 将计算结果 JSON 应用覆盖的文档,并将其作为响应 return。用户不需要知道或关心它是一个复合文档。
这是一个很好的问题,因为您询问的是可能性和最佳实践。答案是 - 这取决于 ;-)
通常您可以使用 CouchDB _list 来完成。例如,您从 _list 所基于的 _view 中获得两个文档,计算复合文档并响应它。缺点是这种服务器端计算与性能非常相关。当您的复合文档将被请求时,请不要使用它。每个用户会话。但是当你的用例是 smth 时,例如每晚一次来自另一项服务的请求应该没问题。
CouchDB 会爱上您,当您采用另一种方法导致复合文档已准备好响应存储在索引中的情况时。
如果您想完全按照应有的方式存储复合文档,可以使用 CouchDB _update 处理程序。您在有效负载中获取文档的自定义属性,并从数据库中获取默认文档,将所有内容合并到复合文档中并将其存储在唯一 ID 下(或覆盖默认文档)。
最后但同样重要的是,您还可以使用两种基于 CouchDB _view 的方法。两者都不会提供复合文档,而是在一个请求中提供默认文档和自定义覆盖。第一种方法是使用多部分键构建一个视图,该键将父文档(默认数据)和子文档(覆盖)组合在一起 - 第二种方法是使用链接数据创建视图:将自定义设置作为视图行的值发出和用默认文档的 _id 覆盖视图行 _id。当使用查询参数 ?include_docs=true
请求视图行时,默认数据和自定义覆盖将包含在结果中。