【问题标题】:Sequelize association cant work on my code,pleaseSequelize 关联无法处理我的代码,请
【发布时间】:2020-02-19 13:16:07
【问题描述】:

我最近要续集。

我有 2 个表,data_track 和 car_detail。我想尝试关联那 2 个表,但它从未关联。

总是返回错误 SequelizeEagerLoadingError: car_detail 没有关联到 data_track!

请帮帮我

两个表的主键列名相同

data_track.js

const Sequelize = require('sequelize')
const gps_status_track = require("./../../configs/gps_status_track")

const data_track = gps_status_track.define('data_track',
    {
        car_id:{
            type:Sequelize.INTEGER,
            primaryKey:true
        },
        off_time:{
            type:Sequelize.INTEGER,
        },
        nopol:{
            type:Sequelize.STRING
        },
        wilayah:{
            type:Sequelize.STRING
        },
        status:{
            type:Sequelize.STRING
        },
        o_path:{
            type:Sequelize.STRING
        },
        keterangan:{
            type:Sequelize.STRING
        },
        last_update:{
            type:"TIMESTAMP"
        },   
    },
    {
        createdAt:'created_at',
        updatedAt:'updated_at',
        deletedAt:'deleted_at',
        freezeTableName: true,
    }
)

data_track.associate = (models)=>{
    data_track.belongsTo(models.car_detail,{foreignKey:'car_id',as:'dataTrack'})
} 

module.exports = data_track

car_detail.js

const Sequelize = require('sequelize')
const gps_status_track = require("./../../configs/gps_status_track")

const car_detail = gps_status_track.define('car_detail',
    {
        car_id:{
            type:Sequelize.INTEGER,
            primaryKey:true
        },
        nopol:{
            type:Sequelize.STRING
        },
        wilayah:{
            type:Sequelize.STRING
        },
        o_path:{
            type:Sequelize.STRING
        },
    },
    {
        createdAt:'created_at',
        updatedAt:'updated_at',
        deletedAt:'deleted_at',
        freezeTableName: true,
    }
)

car_detail.associate = (models)=>{
    car_detail.hasOne(models.data_track,{foreignKey:'car_id',as:'carDetail'})
} 

module.exports = car_detail

谢谢!

【问题讨论】:

    标签: mysql sql node.js express sequelize.js


    【解决方案1】:

    您定义的关联不正确。

    car_detail.hasOne(models.data_track,{foreignKey:'carIDFK', sourceKey: 'cardDetailPKId', as:'carDetail'})

    在数据跟踪模型中,关联将如下所示。

    data_track.belongsTo(models.car_detail,{foreignKey:'carIDFK', targetKey:'cardDetailTablePKId'})

    【讨论】:

    • 我已经试过你的代码,但它仍然给出同样的错误:(
    【解决方案2】:

    尝试这样做:

    DataTrack.js:

    module.exports = (sequelize, Sequelize) => {
        const DataTrack = sequelize.define('data_track',
            {
                car_id: {
                    type: Sequelize.INTEGER,
                    primaryKey: true
                },
                off_time: {
                    type: Sequelize.INTEGER,
                },
                nopol: {
                    type: Sequelize.STRING
                },
                wilayah: {
                    type: Sequelize.STRING
                },
                status: {
                    type: Sequelize.STRING
                },
                o_path: {
                    type: Sequelize.STRING
                },
                keterangan: {
                    type: Sequelize.STRING
                },
                last_update: {
                    type: "TIMESTAMP"
                },
            },
            {
                createdAt: 'created_at',
                updatedAt: 'updated_at',
                deletedAt: 'deleted_at',
                freezeTableName: true,
            });
        return DataTrack;
    }
    

    CarDetail.js:

    module.exports = (sequelize, Sequelize) => {
        const CarDetail = sequelize.define('car_detail',
            {
                car_id: {
                    type: Sequelize.INTEGER,
                    primaryKey: true
                },
                nopol: {
                    type: Sequelize.STRING
                },
                wilayah: {
                    type: Sequelize.STRING
                },
                o_path: {
                    type: Sequelize.STRING
                },
            },
            {
                createdAt: 'created_at',
                updatedAt: 'updated_at',
                deletedAt: 'deleted_at',
                freezeTableName: true,
            }
        );
        return CarDetail;
    }
    

    db.config.js:

    const env = require('./env.js')
    
    const Sequelize = require('sequelize')
    const sequelize = new Sequelize(env.database, env.username, env.password, {
        host: env.host,
        dialect: env.dialect
    })
    
    const db = {}
    
    db.Sequelize = Sequelize
    db.sequelize = sequelize
    
    db.data_track = require('../models/DataTrack')(sequelize, Sequelize)
    db.car_detail = require('../models/CarDetail')(sequelize, Sequelize)
    
    db.car_detail.hasOne(db.data_track, { foreignKey: { name: 'cars_id', allowNull: false } })
    db.data_track.belongsTo(db.car_detail, { foreignKey: { name: 'cars_id', allowNull: false } })
    
    
    module.exports = db
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2019-01-10
      • 2022-10-18
      • 1970-01-01
      相关资源
      最近更新 更多