问题描述
我正在使用sequelize-sendgrid向用户发送电子邮件验证令牌 我将发布主要问题,然后发布与此问题相关的文件 错误:
:“ TypeError:this.sequelize.isDefined不是函数\ n
在Function.init(C:\ Users \ LENOVO \ Desktop \ Dashboard-V1 \ clientServer \ node_modules \ sequelize \ lib \ model.js:968:24)\ n
在module.exports(C:\ Users \ LENOVO \ Desktop \ Dashboard-V1 \ clientServer \ models \ user.js:22:8)\ n
在对象。 (C:\ Users \ LENOVO \ Desktop \ Dashboard-V1 \ clientServer \ handlers \ user.controllers \ user.controllers.registration.js:18:43)\ n在Module._compile(internal / modules / cjs / loader.js :1137:30)\ n在Object.Module._extensions..js(internal / modules / cjs / loader.js:1157:10)\ n在Module.load(internal / modules / cjs / loader.js:985: 32)\ n在Function.Module._load(internal / modules / cjs / loader.js:878:14)\ n在Module.require(internal / modules / cjs / loader.js:1025:19)\ n在require (内部/模块/cjs/helpers.js:72:18)\n在对象处。 (C:\ Users \ LENOVO \ Desktop \ Dashboard-V1 \ clientServer \ routes.js:8:24)“,” type“:”错误“,” msg“:” this.sequelize.isDefined不是函数“}
'use strict';
const {
Model
} = require('sequelize')
const DataTypes = require("sequelize").DataTypes
module.exports = (sequelize ) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
verificationtoken.belongsTo(models.User,{
as: "user",foreignKey: "userId",foreignKeyConstraint: true
});
}
};
User.init({
id: DataTypes.INTEGER.UNSIGNED,firstName: DataTypes.STRING,lastName: DataTypes.STRING,email: DataTypes.STRING,password: DataTypes.STRING,isverified: DataTypes.BOOLEAN,countryCode: DataTypes.STRING,phonenumber: DataTypes.STRING,confirmation_token: DataTypes.STRING,linked_user_id: DataTypes.INTEGER,secret_totp: DataTypes.INTEGER,is_admin: DataTypes.INTEGER,account_status: DataTypes.INTEGER,},{
sequelize,modelName: 'User',});
return User;
};
以上部分通过sclielize cli创建的用户模型
'use strict';
const {
Model
} = require('sequelize');
const DataTypes = require("sequelize").DataTypes;
module.exports = () => {
class VerificationToken extends Model {
static associate(models) {
verificationtoken.belongsTo(models.User,foreignKeyConstraint: true
});
}
};
VerificationToken.init({
userId: DataTypes.INTEGER,token: DataTypes.STRING
},modelName: 'VerificationToken',});
return VerificationToken;
};
使用续集cli的验证模型
需要控制器中的用户和验证模块
const User = require('../../ models / user')(sequelize,DataTypes) const VerificationToken = require(“ ../../ models / VerificationToken”)(sequelize,DataTypes) 请注意,当我向用户控制器中所需的用户发送(序列化,数据类型)时,create / find函数起作用,而如果我不发送给他们,则函数未定义
const SignUpController = (req,res,next) => {
return User.findOrCreate({
where: { email: req.body.email },})
.spread((user,created) => {
// if user email already exists
if(!created) {
return res.status(409).json('User with email address already exists');
} else {
return VerificationToken.create({
userId: user.id,token: crypto(16)
}).then((result) => {
sendVerificationEmail(user.email,result.token);
return res.status(200).json(`${user.email} account created successfully`);
})
.catch((error) => {
return res.status(500).json(error);
});
}
})
.catch((error) => {
return res.status(500).json(error);
});
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)