2014-05-10 31 views

回答

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');

希望這有助於!

3

是的。正如維基在View API ("Altering/Changing Views" section)記載:

要更改視圖或多個視圖只是改變設計文件(見HttpDocumentApi)它們存儲在並將其保存爲一個新的版本。這會導致該設計文檔中的所有視圖在下次訪問時被重建,以防視圖代碼被更改。

請注意,文檔是指更新設計文檔而不是其字段。

相關問題