CouchDB使用javascript來驗證,查詢,執行map-reduce等。我想知道是否有任何方法可以在這些JavaScript函數中使用node.js
庫?如使用require('http')
或與npm
一起安裝的某些第三方模塊。使用CouchDB和Node.js庫
謝謝。
CouchDB使用javascript來驗證,查詢,執行map-reduce等。我想知道是否有任何方法可以在這些JavaScript函數中使用node.js
庫?如使用require('http')
或與npm
一起安裝的某些第三方模塊。使用CouchDB和Node.js庫
謝謝。
不,沒有辦法從CouchDb內部的Node模塊使用外部JavaScript。你可以做一些有限的共享:http://wiki.apache.org/couchdb/HTTP_view_API#Sharing_Code_Between_Views
節點是一個暴露給Javascript語言綁定的平臺,所以Node的「優點」在執行環境中。
儘管有一種使用Python編寫視圖的方法,但我並不知道Node的任何類似內容。
只要不需要Node.js特定的庫(如http
),就可以使用Node.js庫。例如,async在CouchDB中有效。經驗法則:如果它的目的是服務器和的客戶端,你應該很好。
您可以使用CommonJS的module.exports
和exports[something]
模式在視圖之間共享代碼。查看the documentation瞭解更多詳情。
例如,考慮這樣的觀點:
{
_id:"_design/test",
views: {
lib: {
test: "exports.guests = 42;"
},
fish_per_person: {
map: function(doc){
var guests = require('views/lib/test').guests; // 42
emit(doc.number_of_fish, doc.number_of_fish/guests);
}
}
}
}
的fish_per_person
視圖需要在lib/test
導出的值guests
。
謝謝。但我想我會需要這些庫。 –
哪些庫?你想達到什麼目的?這聽起來像是一個挑戰,我非常感興趣。 – garbados
我現在沒有具體的事情要完成。但我可以想象一些。例如,如果我在[在線裁判系統](http://en.wikipedia.org/wiki/Online_judge)上工作,在用戶提交代碼後,我需要使用'child_process'在CouchDB中進行編譯和運行更新處理器。 –
值得指出的是,CouchDB目前使用Mozilla的SpiderMonkey JS引擎來執行。但是,CouchDB郵件列表中已經討論過使用Node.js替代它,這將允許在CouchDB中使用NPM模塊。 (但這是一個很長的路要走) –
我發現[CouchJS](https://github.com/iriscouch/couchjs),它會值得一試嗎? –
有趣的發現。用於生產用途?不,我不會使用它。另外,由於節點是單線程的,因此您需要將所有內容都彙集到單個路徑中。 – WiredPrairie