Mysql Sequelize中未定义findOne属性

Mysql Sequelize中未定义findOne属性,mysql,node.js,express,sequelize.js,Mysql,Node.js,Express,Sequelize.js,我正在尝试使用Sequelize和mysql db创建一个模型。我正在尝试发布到“/students/register”,它一直给我一个错误,说findOne不是一个函数。我尝试要求我的sql,但它不起作用。我还尝试了一个不同的函数,如findAll,但仍然不起作用。有什么问题吗?谢谢 models/Students.js const Sequelize = require('sequelize'); const sequelize = require('../database/db') mo

我正在尝试使用Sequelize和mysql db创建一个模型。我正在尝试发布到“/students/register”,它一直给我一个错误,说findOne不是一个函数。我尝试要求我的sql,但它不起作用。我还尝试了一个不同的函数,如findAll,但仍然不起作用。有什么问题吗?谢谢

models/Students.js

const Sequelize = require('sequelize');
const sequelize = require('../database/db')

module.exports = (sequelize, Sequelize) => {
    const Student = sequelize.define(
        'student', {
            id: {
                type: Sequelize.INTEGER,
                primaryKey: true,
                autoIncrement: true
            },
            name: {
                type: Sequelize.STRING
            },
            email: {
                type: Sequelize.STRING
            },
            password: {
                type: Sequelize.STRING
            },
            created: {
                type: Sequelize.DATE,
                defaultValue: Sequelize.NOW
            }
        }, {
            timestamps: false
        });
    module.exports = Student;
};
   const Sequelize = require('sequelize')
const sequelize = new Sequelize('canavs', 'root', 'root', {
    host: 'localhost',
    port: 8889,
    dialect: 'mysql',
    operatorAliases: false,

    pool: {
        max: 5,
        min: 0,
        acquire: 3000,
        idle: 10000
    }
})
// sequelize.import('./models/Students')
module.exports = sequelize;
const Student_Info = require('./models/Students')
const db = require('./database/db')



// app.use('/students', Student)

app.get('/getName', (req, res) => {
    Student_Info.findOne({
            where: {
                id: 1
            }
        })
        .then((student) => {
            res.json(student.name);
        })
        .catch((err) => {
                res.send('error' + err)
            }

        )
})
数据库/db.js

const Sequelize = require('sequelize');
const sequelize = require('../database/db')

module.exports = (sequelize, Sequelize) => {
    const Student = sequelize.define(
        'student', {
            id: {
                type: Sequelize.INTEGER,
                primaryKey: true,
                autoIncrement: true
            },
            name: {
                type: Sequelize.STRING
            },
            email: {
                type: Sequelize.STRING
            },
            password: {
                type: Sequelize.STRING
            },
            created: {
                type: Sequelize.DATE,
                defaultValue: Sequelize.NOW
            }
        }, {
            timestamps: false
        });
    module.exports = Student;
};
   const Sequelize = require('sequelize')
const sequelize = new Sequelize('canavs', 'root', 'root', {
    host: 'localhost',
    port: 8889,
    dialect: 'mysql',
    operatorAliases: false,

    pool: {
        max: 5,
        min: 0,
        acquire: 3000,
        idle: 10000
    }
})
// sequelize.import('./models/Students')
module.exports = sequelize;
const Student_Info = require('./models/Students')
const db = require('./database/db')



// app.use('/students', Student)

app.get('/getName', (req, res) => {
    Student_Info.findOne({
            where: {
                id: 1
            }
        })
        .then((student) => {
            res.json(student.name);
        })
        .catch((err) => {
                res.send('error' + err)
            }

        )
})
index.js

const Sequelize = require('sequelize');
const sequelize = require('../database/db')

module.exports = (sequelize, Sequelize) => {
    const Student = sequelize.define(
        'student', {
            id: {
                type: Sequelize.INTEGER,
                primaryKey: true,
                autoIncrement: true
            },
            name: {
                type: Sequelize.STRING
            },
            email: {
                type: Sequelize.STRING
            },
            password: {
                type: Sequelize.STRING
            },
            created: {
                type: Sequelize.DATE,
                defaultValue: Sequelize.NOW
            }
        }, {
            timestamps: false
        });
    module.exports = Student;
};
   const Sequelize = require('sequelize')
const sequelize = new Sequelize('canavs', 'root', 'root', {
    host: 'localhost',
    port: 8889,
    dialect: 'mysql',
    operatorAliases: false,

    pool: {
        max: 5,
        min: 0,
        acquire: 3000,
        idle: 10000
    }
})
// sequelize.import('./models/Students')
module.exports = sequelize;
const Student_Info = require('./models/Students')
const db = require('./database/db')



// app.use('/students', Student)

app.get('/getName', (req, res) => {
    Student_Info.findOne({
            where: {
                id: 1
            }
        })
        .then((student) => {
            res.json(student.name);
        })
        .catch((err) => {
                res.send('error' + err)
            }

        )
})

student
模型定义中,您没有返回定义

module.exports = (sequelize, Sequelize) => {
    const Student = sequelize.define(
        'student', {
            ...
        }, {
            timestamps: false
        });
    return Student; // You have to return the Student model in its definition
};

希望这有帮助…

让它保持简单只导出学生模型无需导出Sequelize/Sequelize(db)bcoz您可以需要它而不是导出require

const Sequelize = require('sequelize');
const sequelize = require('../database/db');

const Student = connection.define('student', {

    name: Sequelize.STRING,
    email: {
        type: Sequelize.STRING,
        validate: {
            isEmail: true
        }
    },
    password: {
        type: Sequelize.STRING,
        validate: {
            isAlpha: true
        }
    }
});


module.exports = Student;