如何做同样的事情,但使用 .then 而不是 setTimeout?我有一个错误"Cannot read property 'then' of undefined"



我正在尝试将新的项目符号类型添加到数据库中,并显示带有新添加项目的项目符号列表。

Bullet类方法"添加"-向数据库添加新的项目符号类型

static add(bullet) {
sql.on('error', err => {
console.log(err);
})
sql.connect(config).then(poolPromise => {
return poolPromise.request()
.input('description', sql.NVarChar(MAX), bullet.description)
.input('amount', sql.Int, bullet.amount)
.execute('dbo.usp_bullet_type_add')
}).then((result) => {    
var r = result.returnValue;  
this.addPicture(r, bullet.picDescription, bullet.picture)
})
.catch(err => {
console.log(err);
});
}

如何使用.then而不是setTimeout来完成相同的操作?

router.post("/bulletAdd", (req, res, next) => {
const newBullet = new Bullet(req.body.description, req.body.amount, req.body.picture, req.body.picDescription);
Bullet.add(newBullet)
setTimeout(() => {res.redirect("/allBullets");}, 65);
});

我有一个错误";无法读取未定义的"的属性"then";index.js文件

router.post("/bulletAdd", (req, res, next) => {
const newBullet = new Bullet(req.body.description, req.body.amount, req.body.picture, req.body.picDescription);
Bullet.add(newBullet)
.then(() => {
res.redirect("/allBullets")
})
});

它不起作用,因为您的add方法不返回任何内容它应该返回sql.connect,返回Promise,这将使您的代码按预期工作。

static add(bullet) {
sql.on('error', err => {
console.log(err);
})
return sql.connect(config).then(poolPromise => {
return poolPromise.request()
.input('description', sql.NVarChar(MAX), bullet.description)
.input('amount', sql.Int, bullet.amount)
.execute('dbo.usp_bullet_type_add')
}).then((result) => {    
var r = result.returnValue;  
this.addPicture(r, bullet.picDescription, bullet.picture)
})
.catch(err => {
console.log(err);
});
}

相关内容

最新更新