首页 > 解决方案 > 将数据添加到返回的模型 sequelize

问题描述

我有一个按预期工作的续集模型对象。

const part = sequalize.define("part", {
        id: {type:Sequalize.INTEGER, primaryKey: true, autoIncrement: true},
        part_number: {type : Sequalize.STRING(12), unique: true, allowNull: false},
        description: {type : Sequalize.STRING(255), allowNull: false}, true}
    })

但是,例如在查询中调用此模型时,我想运行一个附加函数。

我现在有这个功能:

part.prototype.getTotalStock = function () {
        let _this = this;
        return new Promise(function(resolve, reject) {
            part.findOne({
                where: {id: _this.id},
                include: [{
                    model: sequalize.models.location,
                }]
            }).then(result => {
                if (result) {
                    var totalStock = 0;
                    let stockOnLocation = result.dataValues.locations

                    stockOnLocation.forEach(function (entry) {
                        totalStock += entry.stock.amount
                    });

                    _this.setDataValue('totalStock', totalStock);

                    return resolve(_this)
                } else {
                    return resolve(0)
                }
            }).catch(err => {
                return reject(err)
            });
        })
    }

我正在做的是我做一个查询,所以我有一个部分对象。之后我可以打电话:

queryResult.getTotalStock().then(result => { //data here in result })

这是有效的,它检索股票,计算它,并将数据添加到自我。现在我的问题是,是否可以在使用模型时自动附加 getTotalStock 的结果?这样我就不必在返回的对象上调用 getTotalStock 了吗?

标签: javascriptnode.jsormsequelize.js

解决方案


推荐阅读