所以我的问题很简单,如果你在 sequelize 中做一个选择,它会返回一个模型。如果您打印出该模型,您可以清楚地看到该模型有一堆选项,dataValues、_prevValues、_change、_options、isNewRecord 等。然而,对我来说奇怪的是,您还可以直接访问数据值,例如。
myModel.myCustomAttribute 将起作用,但根据数据结构,我必须键入 myModel.dataValues.myCustomAttribute。
sequelize 如何做到这一点,我错过了哪些方面?
最佳答案
一种情况是在 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() 调用自身,您会遇到递归困惑。
关于javascript - 为什么我可以直接从 sequelize 模型访问数据值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48565470/