ドキュメントにエラーのリストが含まれています。特定のエラーのあるドキュメントの数と、特定のエラーのあるドキュメントに含まれるエラーの平均数をカウントするビューがあります。
地図
function (doc) {
var i;
for (i = 0; i < doc.errors.length; i = i + 1){
emit([doc.errors[i], doc.flummery], [1, doc.errors.length])
}
}
減らす
function (key, values, rereduce) {
var avg = [];
var cnt = [];
var i;
for (i = 0; i < values.length; i = i + 1) {
avg.push(values[i][1]);
cnt.push(values[i][0]);
}
return [sum(cnt), eval(avg.join("+")) / avg.length]
}
eval() の使用は狂気への道であると何度も読んできましたが、実際にここでつまずく可能性がある方法は考えられません。couchdb ビューで eval() は安全ですか?
Oleg が明白な答えを思いついたことに注意してください。それは「そんなことはしないでください。couchdb は sum() 関数を提供します」です。この状況では、eval() が不要であることは明らかです。ただし、入力を適切に制御できることを考えると、安全に使用できますか?