如何在node.js的函数内一次写两个操作?

我在我的数据库中有两个表,我想用一个function使用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); }); }); }; 

虽然其他答案是正确的,但正如我看到有两个独立的asynchronous函数,所以最好是填充他们并行(更多的性能增益)如下。

 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); }); };