以下是我的收藏的文档示例:
{
"_id": "5a68a9308117670afc3522cd",
"username": "user1",
"favoriteItems": {
"5a0c6711fb3aac66aafe26c6": {
"_id": "5a0c6711fb3aac66aafe26c6",
"name": "item1",
},
"5a0c6b83fd3eb67969316dd7": {
"_id": "5a0c6b83fd3eb67969316dd7",
"name": "item2",
},
"5a0c6b83fd3eb67969316de4": {
"_id": "5a0c6b83fd3eb67969316de4",
"name": "item3"
}
}
}
我正在使用mongoDB mapReduce功能来计算用户喜欢的项目次数。
这是我的map和reduce函数:
var mapFun = function () {
Object.values(this.favoriteItems).forEach(item => {
emit(item, 1)
})
}
var redFun = function (item, values) {
count = 0
for(i = 0; i<values.length; i++) {
count += values[i]
}
return count
}
但是,我收到错误Object.values不是函数:
2018-01-27T13:58:08.494+0000 E QUERY [thread1] Error: map reduce failed:{
"ok" : 0,
"errmsg" : "TypeError: Object.values is not a function :\n@:2:5\n",
"code" : 139,
"codeName" : "JSInterpreterFailure"
}
答案 0 :(得分:2)
Object.values是ES2017的一项功能。可能你的NodeJs版本已经过时且不支持该功能。
你可以,
Object.keys(this.favoriteItems).forEach((key)=>{
let value = this.favoriteItems[key]
})