模型与模型无关"/>
Sequelize模型与模型无关
我已经花了几个小时没事了。我有太多的资料来源,它们都差不多,但是我无法使我的项目正常工作。
这个问题Sequelize.js - "is not associated to"与我的问题非常相似,但是,我的这个问题不应重复。因为肯定有一个新问题!
要列出我的资料,我已经仔细阅读并尝试过的资料:
- Sequelize.js - "is not associated to"
- Sequelize 4.3.2 n:m (many-to-many) association: Unhandled rejection SequelizeEagerLoadingError
- Link to a book on Google
- /@eth3rnit3/sequelize-relationships-ultimate-guide-f26801a75554
为了添加上下文,我正在尝试提供一种允许用户获取其个人资料的路由。每个用户只有一个角色。
例如:
{
id: 4,
email: '[email protected]',
role: {
id: 2,
name: 'admin'
}
}
将findOne与WHERE和INCLUDE一起使用]
exports.getme = (req, res) => { db.users.findOne({ where: { id: req.user.id }, include: [{ model: db.roles, }] }) .then(data => { res.send(data) }) .catch(err => { console.log(err) res.status(500).send({ message: "An error has occured while retrieving data." }) }) }
我得到的错误是:
角色未与用户关联!
这是模型,以及我如何放置它们各自的关联:
Role.js
'use strict'; module.exports = (sequelize, DataTypes) => { const Role = sequelize.define('Role', { id: { type: DataTypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true, field: "id" }, role: DataTypes.STRING }, { timestamps: false }); Role.associate = function (models) { Role.hasMany(models.User, { foreignKey: "roleId", sourceKey: "id" }) } return Role; };
User.js
时,只能在USER表中看到详细信息,而在ROLES表中则看不到任何详细信息。'use strict'; module.exports = (sequelize, DataTypes) => { const User = sequelize.define('User', { id: { type: DataTypes.BIGINT, allowNull: false, autoIncrement: true, unique: true, primaryKey: true }, email: DataTypes.STRING, }, {}); User.associate = function (models) { User.belongsTo(models.Role, { foreignKey: "roleId", targetKey: "id" }); } return User }
而且,当我检查表的relations
编辑:Anatoly从注释部分指出,当db.users
启动时,似乎findOne
没有关联。这是我在server.js
中设置模型的方法:
....
const db = require("./app/models")
if (process.env.NODE_ENV === "production") {
db.sequelize.sync().then(() => {
useRoutes()
seedDB()
})
} else {
db.sequelize.sync({ force: true }).then(() => {
console.log("Drop and re-sync db.")
useRoutes()
seedDB()
})
}
function useRoutes() {
console.log("Use routes...")
require("./app/routes/user/user.routes")(app)
require("./app/routes/emojis/emojis.routes")(app)
require("./app/routes/auth/auth.routes")(app)
const db = require("./app/models")
// Custom.
db.op = db.Sequelize.Op
// Models
db.appsettings = require("./app/models/appsettings/appsettings.model")(db.sequelize, db.Sequelize)
db.countries = require("./app/models/appsettings/country.model")(db.sequelize, db.Sequelize)
db.users = require("./app/models/user/user.model")(db.sequelize, db.Sequelize)
db.roles = require("./app/models/user/role.model")(db.sequelize, db.Sequelize)
db.userscores = require("./app/models/user/userscore.model")(db.sequelize, db.Sequelize)
db.answers = require("./app/models/game/answer.model")(db.sequelize, db.Sequelize)
db.categories = require("./app/models/game/category.model")(db.sequelize, db.Sequelize)
db.questions = require("./app/models/game/question.model")(db.sequelize, db.Sequelize)
db.useracoomplishedquestions = require("./app/models/game/useracoomplishedquestion.model")(db.sequelize, db.Sequelize)
}
我已经花了几个小时一无所获。我有很多资料来源,它们都差不多,但是我无法使我的项目正常工作。这个问题Sequelize.js-“不关联”是...
回答如下:为这样的每个模型调用associate
更多推荐
Sequelize模型与模型无关
发布评论