我试图从我的数据库中获取一个列表。文件看起来像:
{
"class": "lists",
"collection": "symptoms",
"order": "6",
"en": "Headache",
"_id": "9022034e7d5ecd0efab0762c5b7f0c04"
}
有任意数量的“集合”。
视图函数只返回“list”类中的一堆对象:
// Emit lists
exports.viewlist = {
map: function(doc) {
if (doc.class === 'lists') {
emit(
doc.collection, {
order: doc.order,
name: doc.en
});
}
}
};
我编写了一个列表函数,试图将输出过滤到我想要的列表。
exports.viewlist = function(head, req) {
var row;
start({
code: 200,
headers: {
'Content-Type': 'text/json; charset=utf-8',
}
});
while (row = getRow()) {
if (row.collection === req.l) {
send(JSON.stringify(row.value));
}
}
};
当我访问列表的URL时,CouchDB会抛出错误:
http://localhost:5984/dev/_design/emr/_list/viewlists/viewlist?l=symptoms
{"error":"TypeError","reason":"{[{<<\"message\">>,<<\"point is undefined\">>},
{<<\"fileName\">>,<<\"/usr/share/couchdb/server/main.js\">>},
{<<\"lineNumber\">>,1500},\n {<<\"stack\">>,
<<\"(\\\"_design/emr\\\",[object Array],
[object Array])@/usr/share/couchdb/server/main.js:1500\
()@/usr/share/couchdb/server/main.js:1562\
@/usr/share/couchdb/server/main.js:1573\
\">>}]}"}
我无法弄清楚我在哪里出错了。
答案 0 :(得分:2)
我也遇到了这个错误,导致它的原因,正如@ Pea-pod在这里Submitting form to couchDB through update handler not working所暗示的那样,并没有在couchapp的设计文档中正确定义你的exports
。在我们的例子中,它作为list函数无法调用,而是在couchdb日志中显示500 {0}} Type error
和point is undefined
错误。
我们使用kanso,在app.js中我们没有要求列表文件。我们有:
module.exports = {
rewrites: require('./rewrites'),
views: require('./views'),
shows: require('./shows')
};
将其更改为以下内容解决了问题:
module.exports = {
rewrites: require('./rewrites'),
views: require('./views'),
shows: require('./shows')
lists: require('./lists'),
};
我是否可以建议主持人更改此问题的标题以包含point is undefined
,这是在发生此类错误时CouchDB日志中显示的错误,以帮助其他人找到更多错误容易吗?