【问题标题】:Why can I access data values directly from a sequelize model?为什么我可以直接从 sequelize 模型访问数据值?
【发布时间】:2018-07-11 22:31:45
【问题描述】:

所以我的问题很简单,如果你在 sequelize 中进行一次选择,它将返回一个模型。如果您打印出该模型,您可以清楚地看到该模型有一堆选项,dataValues、_prevValues、_change、_options、isNewRecord 等。但对我来说奇怪的是,您还可以直接访问数据值,例如。

myModel.myCustomAttribute 将起作用,但根据数据结构,我必须键入 myModel.dataValues.myCustomAttribute。

sequelize 是如何做到这一点的,我缺少什么方面?

【问题讨论】:

    标签: javascript mysql orm sequelize.js


    【解决方案1】:

    一种情况是在 getter 方法中。如果您需要 getter 方法中的值,并且使用 this.myProperty,则会遇到递归问题。相反,您可以使用 this.dataValues.myProperty。示例:

    var Article = db.define('article', {
      title: {
        type: Sequelize.STRING,
        allowNull: false,
        validate: {
          notEmpty: true
        }
      },
      content: {
        type: Sequelize.TEXT,
        allowNull: false
      },
      tags: {
        type: Sequelize.ARRAY(Sequelize.TEXT),
        defaultValue: []
      }
    
    }, {
      getterMethods: {
        tags() {
          return this.getDataValue.tags.join(', ');
        }
      }
    });
    

    在这种情况下,如果您尝试使用:

      getterMethods: {
        tags() {
          return this.tags.join(', ');
        }
      }
    

    由于 tags() 调用自身,你会遇到递归混乱。

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 1970-01-01
      • 2016-09-06
      • 2018-05-08
      • 1970-01-01
      • 2011-05-08
      • 2012-04-03
      • 2011-12-24
      • 1970-01-01
      相关资源
      最近更新 更多