我使用Sequelize连接到PostgreSQL,因为我想使用同步功能,我想准备有效的模型来在每个环境中创建表格。
修改
钱包:
'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;
};
用户:
'use strict';
var bcrypt = require('bcrypt-nodejs');
var crypto = require('crypto');
var moment = require('moment');
var models = require('./');
var afterCreateHook = function(user, options, fn) {
models.Wallet.build({id_user: user.id}).save();
fn(null, user);
};
module.exports = function(db, DataTypes) {
var User = db.define('User', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
password: DataTypes.STRING,
email: {
type: DataTypes.STRING,
unique: true,
allowNull: false,
isEmail: true
},
login: {
type: DataTypes.STRING,
unique: true,
allowNull: false
}
}, {
tableName: 'pl_users',
instanceMethods: instanceMethods,
classMethods: {
associate : function( models ) {
User.hasOne( models.Wallet);
}
},
hooks: {
afterCreate: afterCreateHook
}
});
return User;
};
为什么
models.Wallet.build({id_user: user.id}).save();
不工作?帐户正在创建,然后我想创建具有特定user_id的钱包。我甚至没有错误......
请帮忙!
答案 0 :(得分:0)
您应该从sequelize docs
中查看relations在您的情况下,您需要定义:
int i = 0;
int j = testList.size() - 1;
while (i < j) {
int temp = testList.get(i);
testList.set(i, testList.get(j));
testList.set(j, temp);
i++;
j--;
}
这会将id_user添加到电子钱包模型,因此您无需在电子钱包模型中指定id_user属性。
如果您使用的是sequelize导入功能,则应在&#34;关联&#34;中添加关系。像这样的类方法:
Wallet.belongsTo(User,{foreignKey: 'id_user'});