【发布时间】:2021-12-04 23:04:27
【问题描述】:
我正在使用 Node.js、Sequelize、Mysql、Express 创建一个应用程序。我对此很陌生,如果这个问题很愚蠢,我很抱歉。
我有两个具有一对多关系的模型:用户和令牌(一个用户有多个令牌,一个令牌有一个用户)。
这是文件:
models/user.js
const { Sequelize, DataTypes } = require('sequelize');
const Token = require('./token')
const db = require('../db/sequelize'),
sequelize = db.sequelize,
jwt = require('jsonwebtoken')
// Model for a user (player)
const User = sequelize.define('User', {
// All the columns
})
User.gAuth = async function(user) {
const token = jwt.sign({id: user.id.toString() },
'password',
{
expiresIn: '7 days'
})
console.log(token)
console.log(Token)
const newToken = Token.create({
token,
user: this.id
})
console.log(newToken)
await newToken.save()
return token
}
module.exports = User
我的错误是在“const newToken = Token.create({...})”上。它说:“Token.create 不是函数”。我试过构建,我有:“TypeError:Token.build is not a function”。
模型/token.js
const { Sequelize, DataTypes } = require('sequelize');
const db = require('../db/sequelize'),
sequelize = db.sequelize
const User = require('./user')
const Token = sequelize.define('Token', {
// All the columns
})
User.hasMany(Token, {
as: 'tokens'
})
Token.belongsTo(User, {
foreignKey: 'UserId',
as: 'user'
})
module.exports = Token
你能帮我理解我做错了什么吗?我找到的所有答案都是关于模型的错误导出,但我没有看到我的错误。
谢谢!
编辑:
当我在 models/token.js 中使用 console.log(sequelize.models) 时,它返回:{ User: User, Token: Token }
但是!当我在 models/user.js 中 console.log(sequelize.models) 时,它会重新调整:{ User: User }
【问题讨论】:
标签: node.js sequelize.js