MongoDB map/reduce,forEach不是一个函数
MongoDB map/reduce, forEach is not a function?
我正在MongoDB中创建一个Map函数,当我在数组上使用forEach()时,它就出现了问题。
用户可能是这样的:
"channels" : [
"Channel 1",
"Channel 2",
],
"user_id" : "somehash"
这是我的地图功能,导致错误:
var map = function() {
if(this.channels && this.user_id) {
var user_id = this.user_id;
this.channels.forEach(function(z, user_id) {
emit(z, {user: user_id});
});
}
}
当我在mongo中运行我的Map/Reduce时,我使用以下命令,我也会得到以下错误:
> db.users.mapReduce(map, reduce, {out : "myoutput" });
Wed Aug 1 12:48:11 uncaught exception: map reduce failed:{
"assertion" : "map invoke failed: JS Error: TypeError: this.channels.forEach is not a function nofile_b:3",
"assertionCode" : 9014,
"errmsg" : "db assertion failure",
"ok" : 0
}
我尝试了一些不同的方法,但似乎都不起作用,这可能是一个简单的问题,但我看不出我做错了什么。
很乐意在这个问题上得到一些帮助。
谢谢!
通过对使用而不是对每个的来修复它,因为它仍然是一个向量,我可以在它上使用.length
。
解决方案:
var map = function() {
if(this.channels && this.user_id) {
var user_id = this.user_id;
for(var i = 0, imax = this.channels.length; i<imax; i++) {
emit(this.channels[i], {user: user_id});
}
}
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么