我想迭代MongoDB集合来获取图表标签,但我得到TypeError:undefined不是一个对象(评估'teams [i] .name')这里是我的代码:
class Node<E> extends AtomicReference<Node<E>> {
private volatile Node<E> prev;
final E element;
...
有人有什么建议吗?我的想法已经不多了。 先感谢您。
答案 0 :(得分:1)
你可以这样做
var teamNames = Teams.find().map(
function(team){
return team.name;
}
)
答案 1 :(得分:0)
teams
的长度必须少于10件。如果teams
为[{name: "first"}]
,则teams[1]
将返回undefined
,您将收到该错误。您可以使用:
for (let i = 0; i < teams.length; i++)
解决这个问题。
您还可以在数组上map获取特定属性:
labels: teams.map(team => team.name),
答案 2 :(得分:0)
在Meteor中,Collection .find()
函数返回cursor,然后您可以使用它来对集合项执行操作。在您的情况下,您将光标视为一个不正确的数组。有几种不同的方法可以解决这个问题。
1)使用.forEach()
迭代光标。
var teamNames = [];
Teams.find().forEach(function (e) {
teamNames.push(e.name);
});
2)使用.fetch()
返回数组中所有匹配的文档,然后迭代它。
var teams = Teams.find().fetch();
var teamNames = [];
for(i = 0; i < teams.length; i++) {
teamNames.push(teams[i].name);
}
3)使用.map()
迭代调用所有项目的回调并返回数组的集合。
var teamNames = Teams.find().forEach(function (e) {
return e.name;
});