【发布时间】:2021-06-25 04:58:48
【问题描述】:
src/models/userModel.ts
@Entity()
export class User extends BaseEntity {
@PrimaryColumn()
id: string;
@Column()
name: string;
@Column()
phoneNumber: string;
@OneToMany((type) => Token, (token) => token.user)
tokens: Token[];
}
@Entity()
export class Token extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;
@PrimaryColumn({ length: 900 })
token: string;
@ManyToOne((type) => User, (user) => user.tokens)
user: User;
}
src/index.ts
import "reflect-metadata";
import { createConnection } from "typeorm";
import { Token, User } from "./models/userModel";
createConnection().then(async (_) => {
for (let i = 1; i <= 2; i++) {
console.log("Loop number " + i + "\n");
let user = new User();
user.id = "test1";
user.name = "Om";
user.phoneNumber = "432423";
let token = new Token();
token.token = "grgrg3432edsd";
user.tokens = [token];
await token.save();
await user.save();
(await User.find({ relations: ["tokens"] })).forEach((e) => console.log(e));
}
});
运行nodemon src/typeorm.ts后输出是,
Loop number 1
User {
id: 'test1',
name: 'Om',
phoneNumber: '432423',
tokens: [ Token { no: 1, token: 'grgrg3432edsd' } ]
}
Loop number 2
User {
id: 'test1',
name: 'Om',
phoneNumber: '432423',
tokens: [ Token { no: 2, token: 'grgrg3432edsd' } ]
}
看到在第二个循环中它只返回一个 Token 对象,而不是分配给该用户的所有令牌
我确实使用 mysql 查询进一步检查了该表:-
mysql> select * from token;
+----+---------------+--------+
| no | token | userId |
+----+---------------+--------+
| 1 | grgrg3432edsd | NULL |
| 2 | grgrg3432edsd | test1 |
+----+---------------+--------+
2 rows in set (0.00 sec)
您可以在第一行看到 userId 变为空,我们将不胜感激。
【问题讨论】:
标签: mysql node.js database typescript typeorm