var Friend = sequelize.define('Friend', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
userId_1: {
type: DataTypes.INTEGER,
allowNull: false
},
userId_2: {
type: DataTypes.INTEGER,
allowNull: false
}
和
var User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
}
我的模型名为Friend,User就像上面那样......
我想要一对一的关联,其中Friend具有每个user_1的名称,user_2与User中的[id]一起
"userId_1": "1",
"userId_2": "2",
"user_1": {
"name": "User1 Name"
},
"user_2": {
"name": "User2 Name"
}
像这样,
我如何使用Sequelize
在Node-Express中解决这个问题答案 0 :(得分:1)
定义这样的模型:
BufferedReader reader = new BufferedReader(new FileReader("file.text"));
int Counter = 1;
String line;
while ((line = reader.readLine()) != null) {
//read the line
Scanner scanner = new Scanner(line);
//now split line using char you want and save it to array
for (String token : line.split("@")) {
//add element to array here
System.out.println(token);
}
}
reader.close();
var Friend = sequelize.define('Friend', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
userId_1: {
type: DataTypes.INTEGER,
allowNull: false
},
userId_2: {
type: DataTypes.INTEGER,
allowNull: false
}
);
Friend.belongsTo(User, { as : 'user_1' , foreignKey : 'userId_1', constraints: false});
Friend.belongsTo(User, { as: 'user_2', foreignKey : 'userId_2' , constraints:false});
取决于constraints:false
而user_1
是否是疯狂的,如果是,那么您可以删除它,如果没有,请保持原样。
您可以像这样获取两个用户的数据
user_2
答案 1 :(得分:0)
要查询Friend
并访问用户的名称,您需要在这两个实体之间创建类型hasOne
的关联。
var Friend = sequelize.define('Friend', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
}
Friend.hasOne(User, { as: 'user_1' }); // this will add the attribute user_1Id to Friend
Friend.hasOne(User, { as: 'user_2' }); // this will add the attribute user_2Id to Friend
}
然后,您可以使用User
Friend.getUser_1()
对象
您可以找到有关hasOne
关联here的更多信息。