gpt4 book ai didi

javascript - Sails.js 增量属性

转载 作者:行者123 更新时间:2023-12-03 10:28:28 25 4
gpt4 key购买 nike

我正在使用 Sails.js,并尝试在调用函数时将模型中的属性加一。它工作并递增并返回值为 1 的 JSON,但从未保存到数据库,因此当我稍后发出 get 请求时,该值仍然是 0。

功能:

addVote: function (req, res, next) {

Nomination.findOne(req.param('id'), function foundNomination(err, nom) {
if(err) return next(err);

if(!nom) return next();

Nomination.update(req.param('id'), {
votes: nom.votes++
})

return res.json({
votes : nom.votes
});

});
},

编辑:

现在这很奇怪。一定是一些范围界定问题。当我将代码更改为这样时,控制台输出 0 然后 1。如果我取出第二个 console.log,它会输出 1...

addVote: function (req, res, next) {
var newVotes = 0;

Nomination.findOne(req.param('id'), function foundNomination(err, nom) {
if(err) return next(err);
if(!nom) return next();

nom.votes++;
newVotes = nom.votes;
console.log(newVotes);
});

console.log(newVotes);

Nomination.update(req.param('id'), {
votes: newVotes
}, function(err) {
if(err) return res.negotiate(err);

return res.json({
votes : newVotes
});
});

},

啊哈!它在 findOne 之前调用 Update 函数。但为什么会这样,我该如何阻止它呢?

最佳答案

聚会有点晚了,但我可能有一个更简单的解决办法。当您将++ 放在数字后面时,它会为该值加一,但会在执行此操作之前返回该值。如果你想要 nom.votes 加 1 后的值,你需要做的就是在值前面加上++,然后它就会返回加 1 后的值,如下所示:

return res.json({
votes : ++nom.votes
});

关于javascript - Sails.js 增量属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com