gpt4 book ai didi

javascript - 用户与加密数据的关系 Sequelize 数据库

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

我试图在用户和他最喜欢的加密货币之间建立关系。

这意味着,多个用户可以拥有与他们最喜欢的相同的加密。

Coin.js

module.exports = (sequelize, DataTypes) => {
const Coin = sequelize.define('Coin', {
cryptoName: DataTypes.STRING,
})

Coin.associate = function(models) {
Coin.belongsToMany(models.CoinsUserRelations, {foreignKey: 'CoinID', through: 'CoinsUserRelations'})
}

return Coin

}

User.js
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: {
type: DataTypes.STRING,
unique: true
},
password: DataTypes.STRING
}, {
hooks: {
beforeSave: hashPassword
}
})

User.associate = function(models) {
User.belongsToMany(models.CoinsUserRelations, {foreignKey: 'UserID', through: 'CoinsUserRelations'})
}
return User
}

这些是我目前的 2 个表,现在我正在尝试在它们之间建立关系。我一直在我的控制台上收到这个错误,我不明白为什么。

我已经多次编辑来解决这个问题,这是在 Anatoly 的帮助下的结果

CoinsUserRelations.js
module.exports = (sequelize, DataTypes) => {
const CoinsUsersRelations = sequelize.define('CoinsUsersRelations', {
UserID: {
type: DataTypes.INTEGER,
},
CoinID: {
type: DataTypes.INTEGER,
}
})

return CoinsUsersRelations
}

如果我实际上是在创建关系之前定义模型,我真的不确定为什么会出现此错误..

Index.js
const fs = require('fs')
const path = require('path')
const Sequelize = require('sequelize')
const config = require('../config/config')
const db = {}

const sequelize = new Sequelize(
config.db.database,
config.db.user,
config.db.password,
config.db.options
)

fs
.readdirSync(__dirname)
.filter((file) =>
file !== 'index.js'
)
.forEach((file) => {
const model = sequelize.import(path.join(__dirname, file))
db[model.name] = model
})
Object.keys(db).forEach(function (modelName) {
if (db[modelName].associate) {
db[modelName].associate(db)
}
})

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db

针对名为 的错误编辑部分 SequelizeEagerLoadingError
module.exports = {
async getUserFavoriteCrypto (req, res) {
try {
const coins = await db.Users.findOne({
where: {
UserID : req.query.userId
},
attributes: ['UserID'],
include: [{
model: db.Coins,
required: false
}]
})
console.log(coins)
res.send({
coins: coins
})
} catch (err) {
res.status(400).send({
error: err
})
}
}
}

最佳答案

您应该在一个地方注册所有模型,然后再注册所有关联。看我的 answer on a similar problem

关于javascript - 用户与加密数据的关系 Sequelize 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62070197/

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