gpt4 book ai didi

express - findOne 不是函数

转载 作者:行者123 更新时间:2023-12-03 22:27:00 25 4
gpt4 key购买 nike

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

const Sequelize = require('sequelize');
module.exports = function (sequelize, Sequelize) {
const Stundet = 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 = Stundet;

}

路线
const Student_Info = require("../models/students")

student.post('/register', (req, res) => {
const dataToday = new Date()
const studentData = {
name: req.body.name,
email: req.body.email,
password: req.body.password,
created: dataToday
}
Student_Info.findOne({
where: {
email: req.body.email
}
})
.then(student => {
if (!student) {
bcrypt.hash(req.body.password, 10, (err, hash) => {
studentData.password = hash
Student_Info.create(studentData)
.then(student => {
res.json({
status: student.email + 'registered'
})
})
.catch(err => {
res.send('error' + err)
})
})

} else {
res.json({
error: 'Student already registered'
})
}
})
.catch(err => {
res.send('error' + err)
})
})
module.exports = student;

最佳答案

当您使用 module.exports 时,您应该返回 Stundet。您已经导出了整个函数。而且我认为您应该传递 DataTypes 而不是 Sequelize。

像这样的东西:

module.exports = function (sequelize, DataTypes) {
const Stundet = sequelize.define(
//...
return Stundet;

}

所以在你的 route 为了使用你的模型:
const Sequelize = require('sequelize');
const DataTypes = sequelize.DataTypes;

let sequelize = new Sequelize(...);

const Student = require('../models/students')(sequelize, DataTypes);

关于express - findOne 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55007284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com