我试图在NodeJS服务中调用Cloudant地图函数进行单元测试。
我已经创建了自己的发射功能,但我仍然无法获得视图以返回我需要的内容。
const data = {
"_id": "68e3d2807c0faa169d504068db99e03f",
"_rev": "2-c3b3249a2eb090e87dc4c053712691c3",
"type": "user",
"name": "Whatever",
"email": "Whatever@google.com",
"cn": "5517605X",
"phone": null,
"deleted": true
}
const emit = function (arg1, arg2) {
return { key: arg1, value: arg2 };
};
var map = function (doc) {
if (doc.type && doc.type === 'user') {
emit([doc.cn, doc.deleted], doc);
}
};
const result = map(data);
console.log(result);
JSFiddle我要做的事情。我知道我可以通过在emit函数前添加一个返回来修复它,但我无法编辑地图函数,因为我直接从Cloudant获取视图。
我还有办法让这项工作成功吗?
答案 0 :(得分:0)
但我无法编辑地图功能
然后你不能改变map
函数的回报。调用它将始终生成undefined
。除了改变map
(或使用别的东西)之外别无他法。
在您显示的特定情况下,emit
可以关闭result
,如果您将result
声明移到emit
之上并将其设为let
:
let result;
const emit = function (arg1, arg2) {
result = { key: arg1, value: arg2 };
return result;
};
var map = function (doc) {
if (doc.type && doc.type === 'user') {
emit([doc.cn, doc.deleted], doc);
}
};
map(data);
console.log(result);
...但是这个代码非常具体,即使你没有采用全功能编程方法,也不会有像这样的副作用的函数。但有时需要。