尝试在我的数据库中增加模型实例上的整数字段。这是相关的代码。
models.Options.findAll({
where: {
PollId: poll_id,
name: option_to_update
}
}).then((option) => {
option.increment('votes');
res.json(option);
});
当我在console.log(选项)时,它显示为一个实例,所以我知道它继承自Instance类,它具有增量函数,可以在这里看到
然而,当我尝试运行option.increment时,我得到了回复
未处理拒绝TypeError:option.increment不是函数
不确定我做错了什么。
答案 0 :(得分:4)
findAll()
将返回一个结果数组,因此如果您想增加该字段,则应使用option[0].increment('votes')
(假设您只想更新第一个结果)。
或者,如果您知道最多会有一个结果,则可以使用findOne
代替findAll
。
因为递增完全是在服务器端完成的,如果要在递增后在数据库中检索文档的当前版本,则需要先reload该实例。
我认为这是适当的方式:
models.Options.findOne({
where: {
PollId: poll_id,
name: option_to_update
}
}).then(option => {
return option.increment('votes'); // assumes `option` always exists
}).then(option => {
return option.reload();
}).then(option => {
res.json(option);
});
(当然,您可以采用一种捷径,并假设votes
在递增后将是其当前值+ 1,但在高度并发的情况下可能并非总是如此)