NodeJS 向Sequelize Model添加自定义方法

hkmswyz6  于 2023-04-29  发布在  Node.js
关注(0)|答案(1)|浏览(151)

我正在尝试向Sequelize模型添加一个自定义方法。下面是我的代码:

'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
    class Form extends Model {
        static associate(models) {
            // define association here
        }

        // attempt 1
        static testing() {
            console.log('testing');
        }
    }

    // attempt 2
    Form.prototype.testing = function() {
        console.log('testing');
    }

    Form.init({
        type: DataTypes.STRING,
        name: DataTypes.STRING,
        identifier: DataTypes.STRING
    }, {
        sequelize,
        modelName: 'Form',
    });

    return Form;
};

我试过这两种方法。下面是我如何调用该方法:

const Form = require('../models/Form');
Form.testing();

这两种方法都返回相同的错误,“TypeError:窗体.testing不是函数”。添加自定义方法的正确方法是什么?

3bygqnnd

3bygqnnd1#

示例模块导出一个函数来初始化并返回模型,而不是模型本身。

const formInit = require('../models/Form');
const Form = formInit(sequelize, DataTypes);
Form.testing();

静态方法形式将起作用。

class Form extends Model {
    static testing() {
        console.log('testing');
    }
}

相关问题