Sequelize.js 瞬态特性

Sequelize.js 瞬态特性,sequelize.js,Sequelize.js,在将对象返回到客户端之前,我想向对象添加其他属性。此时,当对象序列化时,它们将从对象中忽略。是否有方法添加临时属性?是的,创建实例方法应该满足您的需要:您可以通过首先调用Sequalize调用的序列化函数(即toJSON()方法)对返回的对象进行任何更改 我认为将type设置为DataTypes.VIRTUAL可能会有所帮助 比如说 var Line = sequelize.define("Line", { name: { type: DataTypes.STRING(5

在将对象返回到客户端之前,我想向对象添加其他属性。此时,当对象序列化时,它们将从对象中忽略。是否有方法添加临时属性?

是的,创建实例方法应该满足您的需要:

您可以通过首先调用Sequalize调用的序列化函数(即toJSON()方法)对返回的对象进行任何更改


我认为将type设置为DataTypes.VIRTUAL可能会有所帮助

比如说

var Line = sequelize.define("Line", {
    name: {
        type: DataTypes.STRING(50),
        allowNull: false
    },
    projects: {
        type: DataTypes.VIRTUAL
    }
});

Line.findAll().then(function (lines) {
    for (var i = 0; i < lines.length; i++)
        lines[i].projects = [];
    console.log(JSON.stringify(lines));
});
文件:


希望有帮助。

您可以非常轻松地添加自定义实例或类级方法

            const User = sequelize.define('user', { firstname: Sequelize.STRING });

            // Adding a class level method
            User.classLevelMethod = function() {
              return 'foo';
            };

            // Adding an instance level method
            User.prototype.instanceLevelMethod = function() {
              return 'bar';
            };
当然,您还可以访问实例的数据并生成虚拟getter:

            const User = sequelize.define('user', { firstname: Sequelize.STRING, lastname: Sequelize.STRING });

            User.prototype.getFullname = function() {
              return [this.firstname, this.lastname].join(' ');
            };

            // Example:
            User.build({ firstname: 'foo', lastname: 'bar' }).getFullname() // 'foo bar'

谢谢我试着添加一个实例方法,但当它跨越连接时,它没有被序列化。嘿@p15,你找到解决方案了吗?
            const User = sequelize.define('user', { firstname: Sequelize.STRING });

            // Adding a class level method
            User.classLevelMethod = function() {
              return 'foo';
            };

            // Adding an instance level method
            User.prototype.instanceLevelMethod = function() {
              return 'bar';
            };
            const User = sequelize.define('user', { firstname: Sequelize.STRING, lastname: Sequelize.STRING });

            User.prototype.getFullname = function() {
              return [this.firstname, this.lastname].join(' ');
            };

            // Example:
            User.build({ firstname: 'foo', lastname: 'bar' }).getFullname() // 'foo bar'