如何在 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'}]
})
谢谢你的帮助!
我在 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'}]
})
谢谢你的帮助!