作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 sequelize 与 nodeJs 一起使用。
我有一个带有外键的表,但我不知道为什么,它们没有出现在查询中。
import { Model, DataTypes } from "sequelize"
import { sequelize } from "./config"
class VolumeRangeDiscount extends Model{
public readonly id: number;
public readonly updatedAt!:Date;
public readonly createdAt!:Date;
public discount: number;
public static associate(models){
VolumeRangeDiscount.belongsTo(models.VolumeRange, {
foreignKey: "volumeRangeId",
as: "volumeRange",
});
VolumeRangeDiscount.belongsTo(models.Pack, {
foreignKey: "packId",
as: "pack",
});
}
}
VolumeRangeDiscount.init({
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER,
},
createdAt: {
type: DataTypes.DATE,
allowNull: false,
},
updatedAt: {
type: DataTypes.DATE,
allowNull: false,
},
discount:{
type: DataTypes.INTEGER,
allowNull: true,
}
}, { sequelize, tableName: "VolumeRangeDiscount" })
export default VolumeRangeDiscount
当我想通过 id 查找时,它不会查询外键列:
export function findVolumeRangeDiscountById(id) {
return VolumeRangeDiscount.findOne({ where: { id }, raw: true });
}
生成的查询是:
SELECT "id", "createdAt", "updatedAt", "discount" FROM "VolumeRangeDiscount" AS "VolumeRangeDiscount" WHERE "VolumeRangeDiscount"."id" = '3';
但是如果我添加属性选项和它工作的列名,它们会被返回。
{
id: {allowNull: false,
autoIncrement: true,
primaryKey: true,
type: INTEGER {
options: {
},
_length: undefined,
_zerofill: undefined,
_decimals: undefined,
_precision: undefined,
_scale: undefined,
_unsigned: undefined},
Model: VolumeRangeDiscount,
fieldName: 'id',
_modelAttribute: true,
field: 'id'
},
createdAt: {type: DATE {options: [Object], _length: ''
},
allowNull: false,
Model: VolumeRangeDiscount,
fieldName: 'createdAt',
_modelAttribute: true,
field: 'createdAt'},
updatedAt: { type: DATE {options: [Object], _length: ''
},
allowNull: false,
Model: VolumeRangeDiscount,
fieldName: 'updatedAt',
_modelAttribute: true,
field: 'updatedAt'},
discount: {type: INTEGER {
options: {},
_length: undefined,
_zerofill: undefined,
_decimals: undefined,
_precision: undefined,
_scale: undefined,
_unsigned: undefined
},
allowNull: true,
Model: VolumeRangeDiscount,
fieldName: 'discount',
_modelAttribute: true,
field: 'discount'},
}
最佳答案
Sequelize 是一个 ORM,它为您处理关联。您可以使用它以两种方式获取关联行,而不是获取外键:
VolumeRangeDiscount.findOne({ where: { id }, include 'VolumeRange' });
这将使用关联的行填充 VolumeRange
对象。 const vrDiscount = VolumeRangeDiscount.findOne({ where: { id }, include 'VolumeRange' });
const volumeRange = vrDiscount.getVolumeRange();
关于node.js - Sequelize finder 排除了属性但想要所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64461211/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!