更新couchdb中的设计文档是否会导致视图重建?

更新couchdb中的设计文档是否会导致视图重建?,couchdb,Couchdb,假设我有一个带有视图、更新函数等的设计文档。现在假设我通过添加验证处理程序来更新设计文档。即使我根本没有对视图功能进行任何更改,也会导致重新生成此设计文档中定义的视图。是。如Wiki中所述: 要更改一个视图或多个视图,只需更改存储在其中的设计文档(请参阅HttpDocumentApi),并将其另存为新版本。如果视图代码已更改,这将导致在下次访问时重新生成该设计文档中的所有视图 注意:文档指的是更新设计文档而不是其字段。否,只要视图属性本身没有更改,视图就不会重新生成。CouchDB计算设计文档的

假设我有一个带有视图、更新函数等的设计文档。现在假设我通过添加验证处理程序来更新设计文档。即使我根本没有对视图功能进行任何更改,也会导致重新生成此设计文档中定义的视图。

是。如Wiki中所述:

要更改一个视图或多个视图,只需更改存储在其中的设计文档(请参阅HttpDocumentApi),并将其另存为新版本。如果视图代码已更改,这将导致在下次访问时重新生成该设计文档中的所有视图


注意:文档指的是更新设计文档而不是其字段。

否,只要视图属性本身没有更改,视图就不会重新生成。CouchDB计算设计文档的
视图
属性上的哈希值,并将此哈希值用作视图的文件名

我们在生产中经常使用此功能:我们定期更新设计文档,只要视图本身没有更改,就不会重新生成视图

顺便说一句:这也是为什么可以在视图中使用CommonJS模块和
require()
,但只能在
视图中使用路径的原因。您可以这样做,例如:

{
  ...
  "views": {
    "lib": {
      "underscore": "... (underscore.js here)"
    },
    "my_view": {
      "map": "function (doc) { var _ = require('views/lib/underscore'); emit(doc._id, _.pick(doc, 'name', 'address'); }"
    }
  }
}
但是您不能像这样使用
require
var\uqrequire('下划线')

希望这有帮助