我在nodejs和mysql中都有程序,如下所示
db.query()
.then(1)
.then(2)
.then(3)
.catch()
我正在检查then(1)
中数据库的值,并尝试从那里返回响应。在then(2)
中,我正在执行另一个代码,该代码使用来自then(1)
结果的某些数据,因此上..
我的问题:从then(1)
返回响应时,catch()
正在调用(因为then(2)
出错,无法从then(1)
获取数据) 。因此,有什么方法可以停止在then(1)
中进一步执行,以致then(2)
和catch()
无法调用?
db.query('query......', [val1, val2])
.then(rslt => { return res.json({ mssg: "Email already exists!", error: "Email already exists!" }) })
.then(user => { return db.query('INSERT INTO ', value, (err, res, flds) => { err ? reject(err) : resolve(res) }) })
.then(user => { return res.json({ mssg: "Success", success: true}) })
.catch( (err) => { console.log(err) })
答案 0 :(得分:2)
您可以(并且应该)使用异步功能,而不是使用Promise对象的较低级别的.then()
API:
async function doTheThing() {
try {
const result = await db.query('...');
if (result) { // user exists
return res.json({...}); // this will end the entire function
}
const user = await db.query('...');
return res.json({...}); // success
} catch (err) {
console.log(err); // I don't recommend doing this. try/catch should be for recovery
}
}