[英]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.