所以我的问题很简单,如果你在续集中做一个选择,它将返回一个模型。如果您打印出该模型,您可以清楚地看到该模型有一堆选项,dataValues,_prevValues,_change,_options,isNewRecord等。然而,对我来说奇怪的是,您也可以直接访问数据值,例如。
myModel.myCustomAttribute可以工作,但根据数据结构,我必须输入myModel.dataValues.myCustomAttribute。
sequelize如何做到这一点以及我缺少哪些方面?
答案 0 :(得分: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()调用自身,你会得到一个递归的混乱。