首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模型的方法中更新/保存

在模型的方法中更新/保存
EN

Stack Overflow用户
提问于 2017-02-15 16:00:50
回答 1查看 2K关注 0票数 2

如何更新模型中的方法中的记录,如“Sequelize”中的“节点orm-2”

在orm-2中,只需使用this.save()

代码语言:javascript
复制
var users = db.define('users',
    {
        id          : { type: 'serial', key: true },
        username    : { type: 'text', size: 25, unique: true, required: true },
        balance     : { type: 'integer', defaultValue: 0 },
    }, {
        timestamp: true,
        methods: {
            addBalance: function (howMany) {
                howMany = Math.abs(howMany);
                this.balance += howMany;
                this.save(function (err) {
                    console.log("added money to "+this.username+" : "+howMany);
                });
            }
        }
    });

但现在我还不知道

代码语言:javascript
复制
var wallet = sequelize.define('wallet', {
    balance : { type: Sequelize.INTEGER, defaultValue: 0, validate: { min: 0 } }
}, {
    timestamps: true,
    classMethods: {
        addBalance: function (howMany) {
            howMany = Math.abs(howMany);
            this.balance += howMany;
            //UPDATE Or SAVE HERE...
        }
    }
});

它是有简单的命令还是更喜欢其他方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 16:07:44

应该将addBalance方法放在instanceMethods中,而不是在classMethods中,因为您希望对指定模型的单个实例进行操作。

代码语言:javascript
复制
instanceMethods: {
    addBalance: function(howMany) {
        howMany = Math.abs(howMany);
        return this.set('balance', this.get('balance') + howMany).save();
    }
}

该方法将Promise解析返回到模型的当前实例。

编辑

更好的解决方案是使用instance.increment方法

代码语言:javascript
复制
addBalance: function(howMany) {
    howMany = Math.abs(howMany);
    return this.increment('balance', { by: howMany });
}

它将返回与上述选项相同的选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42254280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档