困难的承诺案例 - Sails - MongoDB

时间:2017-01-24 23:21:57

标签: javascript arrays mongodb promise sails.js

我一直在读有关承诺。我想简化页面上的回调。我确实有一个问题。我无法找到符合我案例的在线资料。

我有两个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'
})

0 个答案:

没有答案