【问题标题】:Node.js mongoose and asyncNode.js 猫鼬和异步
【发布时间】:2015-10-23 17:22:57
【问题描述】:

js mongoose 和异步。我需要帮助来确定任务是否完成,以便我可以呈现 html 页面。猫鼬查询和异步完成任务。我已经根据需要测试了代码并正确更新了数据库。但是,我不确定在哪里呈现页面,因为我不知道代码何时完成任务。我希望有人能给我一个答案!谢谢

router.get('/initialize', function (req, res, next) {
    if (req.session.passport.user.accountType == "Admin" ||
        req.session.passport.user.accountType == "Manager") {
        var date = new Date();
        var requestDate = null;
        if (date.getMonth() + 1 < 10) {
            requestDate = new Date(date.getFullYear() + '-0' + (date.getMonth() + 1) + '-' + date.getDate());
        } else {
            requestDate = new Date(date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate());
        }

        var i = 0;
        Relationship.find({manager : { $ne: null }}, function (err, manageRelationshipObject) {
            async.each(manageRelationshipObject, function (relationshipData, callback) {
                Relationship.find({username : relationshipData.username, customerID : { $ne: null }}, function (err, customRelationshipObject) {
                    async.each(customRelationshipObject, function (data, callback) {
                        var managerObject = relationshipData.manager;
                        var workerObject = data.username;
                        var customerObject = data.customerID;
                        i++;
                        Entry.findOneAndUpdate({
                            recordDate: requestDate,
                            customerID: customerObject,
                            workerID: workerObject,
                            managerID: managerObject
                        }, {
                            recordDate: requestDate,
                            customerID: customerObject,
                            workerID: workerObject,
                            managerID: managerObject
                        }, {upsert: true}, function (err, object) {
                            if (err) {
                                return res.send(err);
                            }

                        });


                    });

                });
            });
        });

    }
});

【问题讨论】:

    标签: node.js asynchronous mongoose


    【解决方案1】:

    async.each 接受 3 个参数。

    • 第一个是数组(manageRelationshipObject) √
    • 第二个是您要在该数组上应用的迭代器函数 (Relationship.find) √
    • 第三个是最终的回调函数,一切都完成后。 () x

    看起来你只需要添加第三个参数就可以了。

    这里有更详细的文档:https://github.com/caolan/async

    【讨论】:

    • 感谢您的解释,您是否可以更新上述示例的确切答案,对其他人也有帮助。
    猜你喜欢
    • 2018-08-30
    • 2019-10-12
    • 2014-11-19
    • 2018-06-11
    • 2021-12-04
    • 2019-12-12
    • 2018-06-09
    • 2020-10-16
    • 2019-09-16
    相关资源
    最近更新 更多