【发布时间】:2016-02-13 22:30:05
【问题描述】:
我是 express/node 的新手,并使用 Sequelize 作为 ORM。
我正在尝试创建一个列表,然后在创建列表后我想更新 item 表中的 item.isListed 布尔值,但是我正在努力获取要调用的事务方法 - 谁能告诉我什么这段代码我做错了吗?
/api/listing
var models = require('../../models');
var router = require('express').Router();
router.route('/:id')
.post(function(req,res){
models.Item.findOne({
where : {
itemID : req.params.id
}
}).then(function(item){
if (item){
if (item.owner != req.decoded.user.username){
res.json({message:"not your item"})
} else {
//This message is displayed in console.
console.log("entering transaction");
return models.db.sequelize.transaction(function(t){
//This message is not displayed in console.
console.log("inside transaction")
return models.Listing.create({
sellerID : req.decoded.user.username,
startDate : req.body.startDate,
endDate : req.body.endDate,
startPrice : req.body.startDate,
reservePrice : req.body.reservePrice,
isSold : 0,
itemID : req.params.id
}, {transaction: t}).then(function(t){
return item.updateAttributes({
isListed : 1
}, {transaction: t});
})
}).then(function(result){
res.json({message:"success"})
}).catch(function(err){
res.json(err);
})
//end of else block
}
//end of if item block
}
}).catch(function(err){
res.json(err);
})
});
module.exports = router;
【问题讨论】:
-
“努力获取要调用的事务方法”,那么究竟发生了什么?完全不执行或部分执行?有什么错误吗?
-
根本不执行 - 我在其中添加了一个 console.log 以尝试查看是否发生任何事情,但所有返回的都是一个空对象“{}”
标签: javascript express web transactions sequelize.js