couchdbでは、Javascriptでmapおよびreduce関数を定義し、それらをHTTPPOSTを介してサーバーに送信してビューを定義できます。涼しい。
アプリは、それぞれの関数の文字列表現を指定します。
テキストエディタであるemacsを使用して、couchdbに接続するJSアプリを構築しています。これにより、マップを定義し、次のような関数を減らすことができます。
var byname = function(doc) {
emit(doc.name,null);
};
これにより、emacs構文の強調表示、jslintチェックなどが可能になります。
実行時に、次のようにして、そのように定義された一連のビュー関数のそれぞれの文字列表現を取得して、CouchDBに送信できます。
doc = { views: { empty: { map:stringRep(empty) },
byname: { map:stringRep(byname) },
invalid: { map:stringRep(invalid) }}};
// PUT that doc to couchdb here, to define the design_doc .
ただし、文字列表現には、改行、キャリッジリターンなどが含まれます。
単純なケースで機能する正規表現の置換でそれらを除外することができます。ただし、関数内のコメント行のより複雑なケースもあります。例えば:
var byname = function(doc) {
// a comment here
emit(doc.name,null);
};
この場合、stringRepにはコメントが含まれますが、改行とダミーの空白を削除すると、コメントは残ります。私もそれらを交換することができますが、他の問題があるかもしれません(確かではありません)。
人々がcouchdbに送信する前にjavascript関数をサニタイズする典型的または推奨される方法はありますか?