我正在尝试将新的项目符号类型添加到数据库中,并显示带有新添加项目的项目符号列表。
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);
});
}