Javascript 续集模型方法“;这";问题
我在sequelize中遇到了用户JWT的问题,因为我需要创建一个模型方法,然后在我想要执行验证时应用这个模型方法 问题是,当我尝试使用“this”时,返回的是“user” 有人能给我解释一下原因和一些可能的解决方法吗?泰Javascript 续集模型方法“;这";问题,javascript,database,postgresql,sequelize.js,Javascript,Database,Postgresql,Sequelize.js,我在sequelize中遇到了用户JWT的问题,因为我需要创建一个模型方法,然后在我想要执行验证时应用这个模型方法 问题是,当我尝试使用“this”时,返回的是“user” 有人能给我解释一下原因和一些可能的解决方法吗?泰 const { DataTypes } = require('sequelize') const sequelize = require('../sequelize/db') const bcrypt = require('bcryptjs') const jwt = req
const { DataTypes } = require('sequelize')
const sequelize = require('../sequelize/db')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const User = sequelize.define('user', {
id: {
type: DataTypes.STRING,
allowNull: false,
primaryKey: true
},
name: {
type: DataTypes.STRING,
require: true,
allowNull: false,
unique: true,
validate: {
len: [4, 12]
}
},
password: {
type: DataTypes.STRING,
require: true,
allowNull: false,
validate: {
len: {
args: [6, 12],
msg: 'password between 6 and 12 characters'
},
async set(password) {
this.setDataValue('password', await bcrypt.hash(password, 8))
}
}
},
email: {
type: DataTypes.STRING,
require: true,
allowNull: false,
unique: true,
validate: {
isEmail: true
}
},
avatar: {
type: DataTypes.BLOB,
},
profile: {
type: DataTypes.TEXT
}
})
User.genAuthToken = async function () {
const user = this
const token = jwt.sign({ _id: user.id }, 'qweasd', { expiresIn: '7 days' })
return token
}
const a = async () => {
await User.create({
id: 'asdd',
name: 'nishia',
email: 'emaia@am.me',
password: 'asdasd'
})
const token = await User.genAuthToken()
}
a()
您需要的是实例方法而不是类(静态)方法:
您需要的是实例方法而不是类(静态)方法:
给你一个大大的拥抱,兄弟。谢谢你救了我。我已经离开了这个项目,因为我想不出来。我很难通过文档学习续集。这完全挽救了我的项目。感谢您提供的名称,以便我可以搜索的条款!给你一个大大的拥抱,兄弟。谢谢你救了我。我已经离开了这个项目,因为我想不出来。我很难通过文档学习续集。这完全挽救了我的项目。感谢您提供的名称,以便我可以搜索的条款!
User.prototype.genAuthToken = async function () {
const user = this
const token = jwt.sign({ _id: user.id }, 'qweasd', { expiresIn: '7 days' })
return token
}
...
const a = async () => {
const newUser = await User.create({
id: 'asdd',
name: 'nishia',
email: 'emaia@am.me',
password: 'asdasd'
})
const token = await newUser.genAuthToken()
}