gpt4 book ai didi

javascript - 将 couchdb 复制过滤器从 javascript 翻译为 erlang

转载 作者:行者123 更新时间:2023-11-28 02:37:10 25 4
gpt4 key购买 nike

我有一个 JavaScript 复制过滤器,运行速度太慢,并且 it was suggested我尝试用 erlang 重写它。

我已经设置了环境,并且能够在 futon“temp_view”对话框中成功执行简单的 erlang View ,但我没有任何运气将我的 JavaScript 函数转换为 erlang。

谁能建议如何最好地用 erlang 重写以下内容?任何帮助将不胜感激。

function(doc, req) {
if (doc.date && doc.user_id && (doc.user_id == req.query.userid) && (doc._id.indexOf(\"_design\") != 0)){
var doc_month = "" + doc.date[1];
if(doc_month.length == 1) {
doc_month = "0" + doc_month;
}
var doc_day = "" + doc.date[2];
if(doc_day.length == 1) {
doc_day = "0" + doc_day;
}
var req_month = "" + req.query.month;
if(req_month.length == 1) {
req_month = "0" + req_month;
}
var req_day = "" + req.query.day;
if(req_day.length == 1) {
req_day = "0" + req_day;
}
var doc_datestring = doc.date[0] + "-" + doc_month + "-" + doc_day;
var req_datestring = req.query.year + "-" + req_month + "-" + req_day;

return (doc_datestring >= req_datestring);
} else {
return false;
}
}

最佳答案

我刚刚写完一些我认为与你的 javascript 函数类似的东西。我的文档中有一个年份和一个月份字段 - 均以整数表示。

这就是我最终得到的结果:


{
"_id": "_design/fast_segmenting",
"language": "erlang",
"filters": {
"by_year_month": "... see below for erlang function ..."
}
}

有点难看,所以这里是更好格式的 Erlang 过滤器函数:


fun({Doc}, {Req}) ->
{Query} = proplists:get_value((<<\"query\">>, Req),
Month = list_to_integer(binary_to_list(proplists:get_value((<<\"month\">>, Query))),
Year = list_to_integer(binary_to_list(proplists:get_value((<<\"year\">>, Query))),

case {proplists:get_value((<<\"pubMonth\">>, Doc), proplists:get_value((<<\"pubYear\">>, Doc)} of
{Month, Year} -> true;
_ -> false
end
end.

最有趣的是发现 Query 对象中的值在 Erlang 中是二进制文件,这就是为什么我们需要将它们转换为整数。

关于javascript - 将 couchdb 复制过滤器从 javascript 翻译为 erlang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com