NodeJS:如何使用MongoDB获取具有可变子属性的对象?

时间:2017-01-16 18:34:03

标签: node.js mongodb typescript backend

我正在尝试获取子属性为true的文档数组。这是一些代码:

public static getTeams(req, res) {
    // Initialize a connection to the database
    Globals.initDb(res).then((db: Db) => {
        // Reference a collection in the Database
        db.collection('teams', (error: Error, collection: Collection) => {
            // Check if an error occured getting the collection
            Globals.checkError({ error, result: collection, res }).then(() => {
                // find teams that a user administrates
                collection.find(
                    { 'usergroups.users': { [req.params.id]: true } },
                    { name: 1, icon: 1, type: 1, thumbnail: 1 }
                ).toArray((err, teams: Array<{ name: string, icon: string }>) => {
                    // make sure that went through OK
                    Globals.checkError({ error: err, result: teams, res }).then(() => {
                        if (!teams[0]) {
                            teams = [];
                        }
                        res.status(200).json(teams);
                    });
                });
            });
        });
    });
}

checkError只是我编写的一个函数,可以更容易地检查错误,并且它运行正常,我检查了它。我正在尝试访问usergroups.users.#userId#为真的团队。因此,如果您的ID为j4k53,则usergroups.users.j4k53为真。

但是,如果多个ID属实,则不会返回文档。例如,如果j4k53lfk3m都为真,那么它们都不会被返回。

感谢您的帮助。 (这是带有打字稿的节点,所以如果你不熟悉TS,它可能看起来有点时髦。)

1 个答案:

答案 0 :(得分:0)

知道了:你可以这样写:

{ ['usergroups.users.' + req.params.id]: true}

祝所有发现这个有用的人好运!