【问题标题】:Sequelize Giving error - if (dialectTypes[type.key]) { ^ TypeError: Cannot read property 'key' of nullSequelize Giving error - if (dialectTypes[type.key]) { ^ TypeError: Cannot read property 'key' of null
【发布时间】:2021-05-11 13:33:15
【问题描述】:

我的代码似乎一切正常。有一个客户表,地址是外部表。但是我收到一条错误消息 if (dialectTypes[type.key]) { 类型错误:无法读取 null 的属性“键”。这是我的代码-

module.exports = (sequelize,DataTypes) => {

    const customers = sequelize.define("customers",{
        customerId: {
            type: DataTypes.INTEGER,
            primarykey : true,
            unique: true
        },
        firstname :{
           type: DataTypes.STRING,
           allowNull : false
        },
            
        lastname: DataTypes.STRING,
        username : DataTypes.STRING,
        email: DataTypes.STRING,
        password: DataTypes.STRING,
        mobileNumber: DataTypes.STRING,
        customerGroupId: DataTypes.INTEGER,
        avatar: DataTypes.STRING,
        avatarPath: {
            type: DataTypes.STRING,
            default: "/customer"
        },
        newsLetter: DataTypes.STRING,
        deleteFlag: DataTypes.STRING,
        mailStatus: DataTypes.INTEGER,
        status: DataTypes.INTEGER,
        oauthData: null,
        isActive: DataTypes.INTEGER,
        createdBy: null,
        modifiedBy: null

    })
    return customers;
}

这是地址表-

 module.exports = ( sequelize,DataTypes) => {

     const address = sequelize.define("address",{
         customerId: DataTypes.INTEGER,
         address : DataTypes.STRING,
         countryId : DataTypes.INTEGER,
         zoneId :DataTypes.INTEGER,
         city: DataTypes.STRING,
         local: DataTypes.STRING,
         pincode : DataTypes.INTEGER 
        })
        return address;
 }

这是我的 index.js 文件,我在其中关联了客户和地址表 -

const {Sequelize,DataTypes} = require('sequelize')

const sequelize = new Sequelize('spurtcommerce','root','',{
    host:'localhost',
    dialect:'mysql',
    port:3308
});

sequelize.authenticate()
.then(()=>{
    console.log("Connection established")
}
)
.catch(error =>{
    console.log("Error connecting to db")
})

const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;

// for customer table--->
db.customers = require('./customer') (sequelize,DataTypes);
db.address = require('./address') (sequelize,DataTypes);

db.sequelize.sync({force:false})
.then(() =>{
    console.log("yes re sync customer")
})
.catch(error=>{
    console.log("error",+error)
})


db.customers.hasOne(db.address,{foreignKey:'customerId'})
db.address.belongsTo(db.customers,{foreignKey:'customerId'})

module.exports = db; 

这是终端 -

【问题讨论】:

  • 这不是触发错误的代码...请发布完整的堆栈跟踪和触发它的相关代码!
  • 你现在能告诉我已经添加了 index.js 文件吗?
  • 哪个文件/行触发了错误?您是否尝试注释掉以下两行之一并查看它是否是特定模型? db.customers = require('./customer') (sequelize,DataTypes); db.address = require('./address') (sequelize,DataTypes);

标签: node.js types orm sequelize.js


【解决方案1】:

我在 model 中直接给出了 'null' 值。应该是这样-

 oauthData: {
            type : DataTypes.STRING,
            allowNull : true,
            default: null
        },
        isActive: DataTypes.INTEGER,
        createdBy:{
            type : DataTypes.STRING,
            allowNull : true,
            default: null
        },
        modifiedBy:{
            type : DataTypes.STRING,
            allowNull : true,
            default: null
        },

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2018-06-30
    • 2017-12-29
    • 2018-01-23
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多