Я хотел бы добавить метод экземпляра в модель Sequelize User с postgres. Модель User определяется следующим образом:

const Sql = require('sequelize');
const db = require("../startup/db");

const User = db.define('user', {
    id: {type: Sql.INTEGER,
         primaryKey:true,
         min: 1},
    name: {type: Sql.STRING,
           allowNull: false,
           min: 2,
           max: 50
        },
    email: {type: Sql.STRING,
            isEmail: true},       
    encrypted_password: {type: Sql.STRING,
                         min: 8},
    createdAt: Sql.DATE,
    updatedAt: Sql.DATE
});

Я ищу что-то подобное в модели User:

User.instanceMethods.create(someMethod => function() {
   //method code here
   });

Доступ к методу экземпляра может быть таким:

let user = new User();
user.someMethod();

Есть Instance для модели в Sequelize, но не для метода экземпляра. Как правильно добавить метод экземпляра в модель Sequelize?

2
user938363 23 Окт 2018 в 00:04

2 ответа

Лучший ответ

Вот ответ на вопрос. См. Ответ Mariano.

Не удается получить доступ к методам экземпляров Sequelize

Вот еще чтение: https://codewithhugo.com/using-es6-classes-for -sequelize - 4 - модели /

0
user938363 22 Окт 2018 в 21:54
const User = db.define('user', {
    id: {type: Sql.INTEGER,
         primaryKey:true,
         min: 1},
    name: {type: Sql.STRING,
           allowNull: false,
           min: 2,
           max: 50
        },
    email: {type: Sql.STRING,
            isEmail: true},       
    encrypted_password: {type: Sql.STRING, min: 8},
    createdAt: Sql.DATE,
    updatedAt: Sql.DATE
});


// This an hook function
User.beforeSave((user, options) => {
   // Do something
});

// This is a class method
User.classMethod = function (params) {
    // Do something with params
}

// This is an instance method
User.prototype.instanceMethod = function (params) {
    // Do something with params
}
4
Ugo Giordano 23 Окт 2018 в 12:24
52937747