如何在 sequelize 的 1:1 模型中添加条目?

How to add entrys in 1:1 model in sequelize?

我在 sequelize 中关注了官方文档和许多关于构建模型和关联的网络帖子。

我创建了 2 个模型,用户和密钥(密码)。 我创建了一个:Key.belongsTo(User, {foreignKey: 'userId'}) 协会。

好吧,当我启动应用程序时,sequelize.sync() 正确地创建了 tables,并创建了一个具有以下字段的键 table:

id (PK) // key (string) // createdAt // updatedAt // userId (FK)

似乎一切都是正确的,但我在这里被困了几天,我想在 user-controller.js 中使用这个模型,我想在 Users [=36] 中创建一个条目=] 会自动在 Keys table 中创建一个条目,但是,当我执行以下操作时, Keys table:

中没有任何反应
let newUser = await User.build({
    name: params.name,
    surname: params.surname,
    nick: params.nick,
    email: params.email,
    key: params.password            
})
    
let insertUser = await newUser.save();  

显然,我在原始代码中使用了 brcrypt

如果我试图欺骗条目并且我会做类似的事情:

let newIdUserEntry = insertUser.id;

let newKey = await Key.build({
    key: hashPass,
    userId: newIdUserEntry
})

newKey.save(); 

Keys table 中的条目在 userId 中有一个空值。

你真的应该看看documentation page that describes inserting on belongsTo relations

在第一个示例中,您只是简单地创建了一条用户记录。第二个,如果你说user id为null,那可能是因为newIdUserEntry的值为null(你调试了吗?)或者字段名称与你在模型中声明的不匹配。

无论如何,我认为我提到的文档页面正是您所需要的!

为了帮助其他人,这是我最终实现的代码:

// Models
let User = require('../models/user')(sequelize, Sequelize);
let Key = require('../models/key')(sequelize, Sequelize);

// Associations
User.hasOne(Key, {foreignKey: 'userId'});
Key.belongsTo(User, {foreignKey: 'userId'}); 
User.hasMany(Friend, {foreignKey: 'IDtarget'})

let newUser = await User.build({
    name: params.name,
    surname: params.surname,
    nick: params.nick.toLowerCase(),
    email: params.email.toLowerCase(),        
    Key: {
        key: hashPass
    },            
    image: null
},{
    include: [{ model: Key}]  //, through: 'userId'}]
})

谢谢你的帮助!