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

时间:2014-05-10 17:31:16

标签: couchdb

假设我有一个包含视图,更新函数等的设计文档。现在假设我通过添加验证处理程序来更新设计文档。即使我根本不对视图函数进行任何更改,这是否会导致重新构建此设计文档中定义的视图。

2 个答案:

答案 0 :(得分:5)

不,只要视图属性本身未更改,视图就不会重新生成。 CouchDB计算设计文档的views属性的哈希值,并使用此哈希值作为视图的文件名。

我们在制作中大量使用此功能:我们会定期更新我们的设计文档,只要视图本身不会更改,视图就不会重新生成。

顺便说一句:这也是您可以在视图中使用CommonJS模块和require()的原因,但您仅限于views内的路径。您可以这样做:

{
  ...
  "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 _ = require('underscore');

希望这有帮助!

答案 1 :(得分:3)

是。如Wiki中的View API ("Altering/Changing Views" section)所述:

  

要更改视图或多视图,只需更改设计文档(请参阅HttpDocumentApi),然后将其保存为新版本。这会导致在下次访问时重建该设计文档中的所有视图,以防视图代码被更改。

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