javascript - 类型错误 : Cannot read property 'hasOne' of undefined

标签 javascript node.js postgresql express sequelize.js

TypeError:无法读取 Function.ADataMembers.associate 处未定义的属性“hasOne”。这是 ADataMember.js

'use strict'

module.exports = (sequelize, DataTypes) => {
var ADataMembers = sequelize.define('data_members', {
    code: {
        type: DataTypes.STRING,
        primaryKey: true
    },
    names: {
        type: DataTypes.STRING,
        allowNull: false
    },
    first_last_name: {
        type: DataTypes.STRING,
        allowNull: false
    },
    second_last_name: {
        type: DataTypes.STRING,
        allowNull: false
    },
    career_id: {
        type: DataTypes.STRING
    },
    email: {
        type: DataTypes.STRING
    },
    phone: {
        type: DataTypes.STRING
    },
    image_url: {
        type: DataTypes.TEXT
    },
    name_status: {
        type: DataTypes.INTEGER
    },
    has_key: {
        type: DataTypes.BOOLEAN
    },
    birthday: {
        type: DataTypes.DATE
    }
})

ADataMembers.associate = function(models) {
    models.ADataMembers.hasOne(models.ACareers)
    models.ADataMembers.hasOne(models.AMemberStatus)
    models.ADataMembers.belongsTo(models.ADataArea, {
        foreignKey: {
            allowNull: false
        }
    })
}

return ADataMembers
}

这是我的 index.js

'use strict'

const fs = require('fs')
const path = require('path')
const Sequelize = require('sequelize')
const basename = path.basename(__filename)
const env = process.env.NODE_ENV || 'development'
const config = require(__dirname + '/../config/config.json')[env]
const db = {}

let sequelize
if (config.use_env_variable) {
    sequelize = new Sequelize(process.env[config.use_env_variable], config)
} else {
    sequelize = new Sequelize(config.database, config.username, config.password, config)
}

fs
    .readdirSync(__dirname)
    .filter(file => {
        return (file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js')
    })
    .forEach(file => {
        const model = sequelize['import'](path.join(__dirname, file))
        db[model.name] = model
})

Object.keys(db).forEach(modelName => {
    if (db[modelName].associate) {
        db[modelName].associate(db)
    }
})

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db

我正在关注这个例子 https://sequelize.readthedocs.io/en/1.7.0/articles/express/#introduction 但是出了点问题。如果有人能帮助我,我将不胜感激。

最佳答案

您正在用不同的名称定义它。

改变这个:

var ADataMembers = sequelize.define('data_members', {
//                                     ^ this is the problem

对此:

var ADataMembers = sequelize.define('ADataMembers', {

关于javascript - 类型错误 : Cannot read property 'hasOne' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881334/

相关文章:

javascript - 捕获触发回发的任何事件,并在数据发送到服务器之前触发事件

javascript - 环境变量 - 未定义

django - ArrayField 无法识别?

postgresql - PostgreSQL 9.2 中,流复制是否需要归档?

javascript - jQuery .unload() 不显示任何内容

javascript - 无法从文本框中输出值的乘法(可能是 NAN)-Backbone.js

javascript - 如何通过图标值隐藏图像

node.js - 我们可以将屏幕截图作为附件添加到 Azure 管道中的测试结果吗

javascript - 分割字符串并保留分割器

sql - 如何知道有多少帖子匹配查询