Sequelize Association не может работать над моим кодом, пожалуйста - PullRequest
1 голос
/ 23 октября 2019

Я недавно, чтобы продолжить.

У меня есть 2 таблицы, data_track и car_detail. Я хочу попробовать связать эту таблицу 2, но она никогда не ассоциируется.

всегда возвращается ошибкато же имя столбца первичного ключа

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Вы определяете, что ассоциация неверна.

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

в дорожке данныхмодели, ассоциация будет выглядеть следующим образом.

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

0 голосов
/ 23 октября 2019

Попробуйте сделать это следующим образом:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...