我正在开发一个电子应用程序,对于数据库,我正在使用sqlite3和sequelize。我想在以下两个模型之间建立一对多关系。
>
项目
度量指标可以是升/千克/单位,并且可以在这些指标中的任何一个中测量项目。下面是我如何声明项模型的。
const{Model,DataTypes}=require(“sequelize”);const sequelize=require(“../database/db”);const Metric=require(“./metricModel”);类项扩展模型{}
我tem.init({id:{type: DataTypes。整数,自动增量:真,主键:真,},名称:{type: DataTypes。字符串,允许空:假,},metricId:{type: DataTypes。整数,允许空:假,引用:{模型:“度量”,键:“id", }, }, 可用:{类型:数据类型。FLOAT,默认值: 0,},传入:{类型:数据类型。FLOAT,默认值: 0, }, }, { 序列化,tableName:“项目”,freezeTableName:真, } ); 我tem.associate=(模型)=
下面是我如何声明度量的
const { Model, DataTypes } = require("sequelize");
const sequelize = require("../database/db");
const Item = require("./itemModel");
class Metric extends Model {}
Metric.init(
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.STRING(10000),
},
},
{
sequelize,
tableName: 'metrics', freezeTableName: true
}
);
Metric.associate = function (models) {
Metric.hasMany(models.Item, { foreignKey: "metricId" });
};
module.exports = Metric;
还包括对项目进行选择查询。如下所示。
const items = await Item.findAll({include: [Metric]});
我得到以下错误
糟糕的是,我的items模型中有一个重复的列,因为在调试过程中,名为item的表预先存在,所以工作正常。如果遇到此问题,请确保正确声明了所有表。