我一直在读有关承诺。我想简化页面上的回调。我确实有一个问题。我无法找到符合我案例的在线资料。
我有两个mongo系列。一个包含UserID,另一个包含用户信息。
首先我需要获取ID
{
"_id" : ObjectId("5883ee4ed09e16a01aca63dc"),
"logo" : "logo.png",
"shortname" : "CSGO",
"longname" : "Counter-Strike: Global Offensive",
"starttime" : ISODate("2017-05-19T15:00:00Z"),
"status" : "Status",
"limit" : 5,
"teams" : [
{
"teamid" : ObjectId("5883faa13e72bb7c80b4f698"),
"leaderid" : ObjectId("5883ee8f0cfc03217d0e6329"),
"teamname" : "NAKdSquad",
"locked" : false,
"members" : [
ObjectId("5883ee8f0cfc03217d0e6329")
]
},
{
"teamid" : ObjectId("5884dd29b0dd0074050f2ef3"),
"leaderid" : ObjectId("5883f4d7e87c76c06cff8f56"),
"teamname" : "tomasSquad",
"locked" : false,
"members" : [
ObjectId("5883f4d7e87c76c06cff8f56")
]
}
]
}
我需要获取的ID位于数组内的数组中。 " teams.members&#34 ;. 目前我使用以下字符串来获取ID。
Turneringer.native(function (err, collection) {
if (err) sails.log(err)
collection.find({
shortname: shortname,
'teams.members': {
$in: [ ObjectId(userid) ]
}
}, {
_id: 0,
'teams.members.$': 1
}).toArray(function (err, resultTeam) {
if (err) sails.log(err)
sails.log(JSON.stringify(resultTeam))
return resultTeam
})
})
结果:
[{"teams":[{"teamid":"5884dd29b0dd0074050f2ef3","leaderid":"5883f4d7e87c76c06cff8f56","teamname":"tomasSquad","locked":false,"members":["5883f4d7e87c76c06cff8f56"]}]}]`
ID作为数组出现,因此我需要使用某种循环。我已经尝试.each
,.forEach
& .then
里面有一个循环,但似乎不是我的解决方案。
我需要帮助才能找到如何循环成员,以便我可以从另一个集合中获取缺刻列表。
有人可以帮助我一起锻炼吗? - 我已经试了好几个小时,现在我已经完全空白了。
祝你好运 OrKarstoft
编辑:
这是我尝试过的承诺。
Turneringer.native(function (err, collection) {
if (err) sails.log(err)
collection.find({
shortname: shortname,
'teams.members': {
$in: [ ObjectId(userid) ]
}
}, {
_id: 0,
'teams.members.$': 1
}).toArray(function (err, resultTeam) {
if (err) sails.log(err)
sails.log(JSON.stringify(resultTeam))
return resultTeam
})
}).forEach(function (result) {
sails.log(result)
^This gives error 'TypeError: Cannot read property 'forEach' of undefined'
})