Sequelize.js Sequelize、关系和所需属性
我创建了一个示例Express/Sequelize/sqlite应用程序,在关联模型时遇到了一个奇怪的问题。我的模式如下: 一个角色可以有多个用户 榜样:Sequelize.js Sequelize、关系和所需属性,sequelize.js,Sequelize.js,我创建了一个示例Express/Sequelize/sqlite应用程序,在关联模型时遇到了一个奇怪的问题。我的模式如下: 一个角色可以有多个用户 榜样: module.exports = (sequelize, DataTypes) => { const Role = sequelize.define("Role", { name: { type: DataTypes.STRING, allowNull: false }, shortN
module.exports = (sequelize, DataTypes) => {
const Role = sequelize.define("Role", {
name: {
type: DataTypes.STRING,
allowNull: false
},
shortName: {
type: DataTypes.STRING,
allowNull: false
}
});
Role.associate = function(models) {
// associations can be defined here
Role.hasMany(models.User, {
as: "Users",
foreignKey: "role_id",
sourceKey: "id"
});
};
return Role;
};
用户模型
"use strict";
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define("User", {
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
allowNull: false
},
username: {
type: DataTypes.STRING,
allowNull: false
},
password: DataTypes.STRING
});
User.associate = function(models) {
// associations can be defined here
User.belongsTo(models.Role, {
as: "Role",
foreignKey: "role_id",
targetKey: "id"
});
};
return User;
};
用法
现在我尝试创建一个角色和一个用户,并将它们关联起来
let adminRole = await models.Role.create({
name: "Admin",
shortName: "A"
});
let john = await models.User.build({ // Step 1
firstName: "John",
lastName: "Doe",
email: "John@doe.com",
username: "john",
password: "this_should_be_encypted"
});
await john.setRole(adminRole); // Step 2
await john.save(); // Step 3
- 步骤1:我只是构建用户,知道所有属性都不可为null
- 步骤2:调用setRole()时。Sequelize调用一个伪INSERT语句
用户INSERT INTO
role\u id(
updatedAt,
createdAt,
),大概是为了创建一个具有正确角色id的用户条目)值(1,…
- 第三步:永远无法到达
await john.setRole(adminRole, {save: false}); // Step 2
await john.save(); // Step 3
非常感谢,这完全解决了我的问题。还有一个问题,从哪里可以获得这些信息?也许我太懒了,但我在官方文档中没有找到。是的,维护文档的人也很懒,哈哈。你可以在sequelize github的问题部分找到这方面的提及。比如