使用mongodb和nodejs解决承诺 [英] resolving a promise using mongodb and nodejs

查看:76
本文介绍了使用mongodb和nodejs解决承诺的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我是nodejs和mongodb的新手,在解决第二个承诺后,我无法解决我的第一个承诺.解决后,我可以看到第二个承诺的结果.这是我的代码

Hello I am new to nodejs and mongodb, i am having trouble resolving my first promise after the second promise has been resolved. I can see the result of my second promise after it is resolved. Here is my code

 var getShows = function () {

    return new Promise(function (resolve, reject) {

    usersdb.find(function (err, result) {
        if(err) return console.error(err);

        var usersFromCall = result;

        var task = function (users) {
            return new Promise(function (resolve, reject) {

                var user = {
                    'name': '',
                    'pages': []
                }

                user.name = users.show;
                console.log(users);

                pagedb.find({'show' : user.name}, function (err, resp) {

                    for(var j = 0 ; j <resp.length; j ++){
                        var pages = { 'pageId': ''};
                        pages.pageId = resp[j].pageId;

                        user.pages.push(pages);
                    }
                    console.log(user);

                    resolve({show: user});
                })

            });

        };

        var actions = usersFromCall.map(task);
        return Promise.all(actions);
    }).then(function () {
        resolve()
    })
 });

};

我在找到之后在then函数中解析第一个诺言吗?

do i resolve the first promise in a then function after the find?

推荐答案

以下方法应该起作用:

var getShows = function () {

    return new Promise(function (resolve, reject) {

        usersdb.find(function (err, users) {
            if (err) return console.error(err);

            var task = function (user) {
                return new Promise(/* ... */);
            };

            var actions = users.map(task);
            Promise.all(actions).then(resolve, reject);
        });

    });

};

getShows().then(function (results) {
    // Prints the result of each task as an array
    console.log(results);
});

这篇关于使用mongodb和nodejs解决承诺的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆