簡體   English   中英

如何一次在node.js的函數內部編寫兩個操作?

[英]How to write two operations at a time inside function in node.js?

我的數據庫中有兩個表,我想使用nodejs使用一個函數獲取兩個數據

我的表名稱是ContactGroup和Group

我的代碼:

exports.getNewGroup = function (req, res) {
    ContactGroup.findAndCountAll({
        attributes: ['id', [sequelize.fn('COUNT', sequelize.col('group.id')),
            'contactCount'
        ]],
        include: [{
            model: Group,
        }],
    }).then(seenData => {
        console.log('seenData:', seenData);
    });


    Group.findAll().then(function (data) {
        return res.status(200).send(data);
    }).catch(function (err) {
        return res.status(400).send(err.message);
    });
};

像上面的代碼一樣,我正在編寫ContactGroup.findandcount和Group.findall,我通過郵遞員檢查了此api,但是只有一個在這里工作,我希望兩個都在工作嗎? 幫我!

您采用全局數組或對象並以下列方式使用它

exports.getNewGroup = function (req, res) {
    var globalObj={};
        ContactGroup.findAndCountAll({
            attributes: ['id', [sequelize.fn('COUNT', sequelize.col('group.id')),
                'contactCount'
            ]],
            include: [{
                model: Group,
            }],
        }).then(seenData => { globalObj.seendata=seenData;return Group.findAll();})


        .then(function (data) {
    globalObj.alldata=data;
            return res.status(200).send(globalObj);
        }).catch(function (err) {
            return res.status(400).send(err.message);
        });
    };

將您的代碼更改為此,然后嘗試:

exports.getNewGroup = function (req, res) {
ContactGroup.findAndCountAll({
    attributes: ['id', [sequelize.fn('COUNT', sequelize.col('group.id')),
        'contactCount'
    ]],
    include: [{
        model: Group,
    }],
}).then(seenData => {
    console.log('seenData:', seenData);
    Group.findAll().then(function (data) {
       return res.status(200).send(data);
    }).catch(function (err) {
       return res.status(400).send(err.message);
    });
 });    
};

盡管其他答案是正確的,但正如我所見,有兩個獨立的異步函數,因此最好將它們並行填充(以提高性能),如下所示。

exports.getNewGroup = function (req, res) {
    p1= ContactGroup.findAndCountAll({
        attributes: ['id', [sequelize.fn('COUNT', sequelize.col('group.id')),
            'contactCount'
        ]],
        include: [{
            model: Group,
        }],
    })
    p2 =Group.findAll() 

    Promise.all([p1,p2]).then(values => { 
        console.log(values);
    })
    .catch(function (err) {
       return res.status(400).send(err.message);
    });


};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM