【问题标题】:Sequelize Model exports a FunctionSequelize 模型导出函数
【发布时间】:2021-05-13 20:58:39
【问题描述】:

我已经定义了这个模型:

const Sequelize = require('sequelize');
const db = require("../database/db")
var Reparacion = db.sequelize.define('reparaciones', {
    id: {
      type: Sequelize.INTEGER,
      allowNull: false,
      autoIncrement: true,
      primaryKey: true,
    },
    descripcion: {
      type: Sequelize.STRING(255),
      allowNull: true
    },
    fecha_inicio: {
      type: Sequelize.DATEONLY,
      allowNull: true
    },
    fecha_fin: {
      type: Sequelize.DATEONLY,
      allowNull: true
    },
  },{});
module.exports=Reparacion

在其他模型中,当我在其他模型中定义外键时,方法 HasMany 和 belongsTo 不起作用,因为我在函数上调用它们:

  const Reparacion = require("./reparacion")
  console.log(typeof(Vehiculo))
  console.log(typeof(Reparacion))
  Vehiculo.hasMany(Reparacion,{foreingKey:"vehiculoId", onDelete: 'cascade', sourceKey:"matricula"})
  Reparacion.belongsTo(Vehiculo)

两个控制台日志都返回:“function”

我必须改变什么才能正确定义关联??

编辑

这是de“Vehiculo”模型:

const Sequelize = require('sequelize');
const db = require("../database/db")
var Vehiculo = db.sequelize.define('vehiculos', {
    id: {
      type: Sequelize.INTEGER,
      autoIncrement: true,
      primaryKey: true,
      allowNull: true
    },
    matricula: {
      type: Sequelize.STRING(45),
      allowNull: false,
      primaryKey: true,
    },
    marca: {
      type: Sequelize.STRING(50),
      allowNull: true
    },
    modelo: {
      type: Sequelize.STRING(50),
      allowNull: true
    },
    
    anio: {
      type: Sequelize.INTEGER,
      allowNull: true
    },
    color: {
      type: Sequelize.STRING(20),
      allowNull: true
    },
    puertas: {
      type: Sequelize.INTEGER,
      allowNull: true
    },
    motor: {
      type: Sequelize.STRING(20),
      allowNull: true
    },
  },{});
  const Reparacion = require("./reparacion")
  Vehiculo.hasMany(Reparacion,{foreingKey:"vehiculoMatricula", onDelete: 'cascade', sourceKey:"matricula"})
  Reparacion.belongsTo(Vehiculo)
  module.exports=Vehiculo
  

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    好吧,预计typeof Vehiculotypeof Reparacion 将返回一个function,这是因为每个构造函数或类都是 JS 中的函数,因此当您为实体创建模型时,它会返回一个函数/构造函数可以为您创建实体的实例。所以没有问题。

    实际上文档显示了类似的代码https://sequelize.org/master/manual/assocs.html

    【讨论】:

    • 但是如果你调用函数我得到一个错误:“TypeError: Vehiculo.hasMany is not a function”
    • 您能补充一下您如何导出和导入Vehiculo 吗?
    • 该代码生成了一个名为“vehiculoId”VARCHAR(45) 的表,但我不知道为什么这个名称,以及为什么不是外键
    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2015-12-06
    • 2015-06-01
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多