Node.js (Sequelize+;Postgres+;NodeJS)从另一个表中插入FK(userID)
我正在使用连接到PostgreSQL的Sequelize,由于我想使用sync函数,我想准备有效的模型在每个环境中创建表 编辑: 钱包:Node.js (Sequelize+;Postgres+;NodeJS)从另一个表中插入FK(userID),node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我正在使用连接到PostgreSQL的Sequelize,由于我想使用sync函数,我想准备有效的模型在每个环境中创建表 编辑: 钱包: 'use strict'; module.exports = function(db, DataTypes) { var Wallet = db.define('Wallet', { id: { type: DataTypes.INTEGER, autoIncrement: true, allowNull: f
'use strict';
module.exports = function(db, DataTypes) {
var Wallet = db.define('Wallet', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
money: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
}
createdAt: DataTypes.DATE,
updatedAt: DataTypes.DATE
}, {
tableName: 'wallet',
classMethods:{
associate : function( models ) {
Wallet.belongsTo( models.User,{ foreignKey : 'id_user'});
}
}
});
return Wallet;
};
用户:
为什么
它不起作用了吗?帐户正在创建,然后我想用特定的用户id创建钱包。我甚至没有错误
救命啊 您应该查看sequelize文档
在您的情况下,您需要定义:
Wallet.belongsTo(User,{foreignKey: 'id_user'});
这会将id_用户添加到Wallet模型中,因此您不需要在Wallet模型中指定id_用户属性
如果使用sequelize导入函数,则应在“associate”类方法中添加如下关系:
module.exports = function(db, DataTypes) {
var Wallet = db.define('Wallet', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
pin: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
money: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 0
},
createdAt: DataTypes.DATE,
updatedAt: DataTypes.DATE
}, {
tableName: 'Wallet',
classMethods:{
associate : function( models ) {
Wallet.belongsTo( models.User,{ foreignKey : 'id_user'});
}
}
});
如果需要为现有用户创建新钱包,可以使用user.createWallet({})。可以更具体一些吗?这是个好主意,但我不知道该把它放在哪里。。。现在它使用的是:
var afterCreateHook=function(user,options,fn){this.associations.Wallet.target.create({id_user:user.id}).then(function(otherModel){fn(null,user);}).catch(function(err){return;})代码>我需要更多信息,如果您有一个名为User的用户实例,它有关联方法,其中一个是createWallet,因为用户与wallet有关联,所以您可以执行:User.createWallet({pin:123456,money:PEN})。然后(..).catch(..)
Wallet.belongsTo(User,{foreignKey: 'id_user'});
module.exports = function(db, DataTypes) {
var Wallet = db.define('Wallet', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
pin: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
money: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 0
},
createdAt: DataTypes.DATE,
updatedAt: DataTypes.DATE
}, {
tableName: 'Wallet',
classMethods:{
associate : function( models ) {
Wallet.belongsTo( models.User,{ foreignKey : 'id_user'});
}
}
});