重启后TypeORM数据库一直为空
TypeORM database is always empty after restart
我刚开始使用typeorm,运行变成了一个大问题。 conection.sychronize()
和 repository.save(foo)
都没有实际保存对数据库文件的更改。更准确地说,在 运行 期间,我可以同步我的数据库、保存和读取实体。但是,当我关闭我的程序 运行 时,数据库再次为空。连桌子都没有。
我的实体
@Entity({name: "info"})
export class DBInfo {
@PrimaryGeneratedColumn()
id: number;
@Column("integer", { name: "gameCreation", unique: true })
gameCreation: number;
@Column("integer", { name: "gameDuration"})
gameDuration: number;
@Column("integer", { name: "gameId", unique: true })
gameId: number;
}
@Entity({name: "match"})
export class DBMatch {
@PrimaryGeneratedColumn()
id: number;
@OneToOne(() => DBInfo, {cascade: true})
@JoinColumn()
info: DBInfo;
}
我是这样打开连接的
let connectionTemp: Connection;
try{
connectionTemp = await createConnection({
type: "sqljs",
location: filePath,
entities: [DBMatch, DBInfo],
name: "MyConnection1"
});
console.log("DBReader", "connection open");
} catch (e){
console.log("DBReader", "could not open connection", e);
}
return connectionTemp;
然后我同步数据库,创建所有表:
await this.connection.synchronize(false);
像这样将实体写入数据库:
let savedMatch = await this.MatchRepositoryV5.save(dbMatch);
我省略了部分代码,因为我认为它没有必要。
之后我可以从数据库中检索匹配项,但是当重新启动我的程序时,数据库再次完全为空。
我错过了什么?
您需要将 autoSave
连接 属性 设置为 true
所以你初始化连接如下:
let connectionTemp: Connection;
try{
connectionTemp = await createConnection({
type: "sqljs",
location: filePath,
autoSave: true,
entities: [DBMatch, DBInfo],
name: "MyConnection1"
});
console.log("DBReader", "connection open");
} catch (e){
console.log("DBReader", "could not open connection", e);
}
return connectionTemp;
我刚开始使用typeorm,运行变成了一个大问题。 conection.sychronize()
和 repository.save(foo)
都没有实际保存对数据库文件的更改。更准确地说,在 运行 期间,我可以同步我的数据库、保存和读取实体。但是,当我关闭我的程序 运行 时,数据库再次为空。连桌子都没有。
我的实体
@Entity({name: "info"})
export class DBInfo {
@PrimaryGeneratedColumn()
id: number;
@Column("integer", { name: "gameCreation", unique: true })
gameCreation: number;
@Column("integer", { name: "gameDuration"})
gameDuration: number;
@Column("integer", { name: "gameId", unique: true })
gameId: number;
}
@Entity({name: "match"})
export class DBMatch {
@PrimaryGeneratedColumn()
id: number;
@OneToOne(() => DBInfo, {cascade: true})
@JoinColumn()
info: DBInfo;
}
我是这样打开连接的
let connectionTemp: Connection;
try{
connectionTemp = await createConnection({
type: "sqljs",
location: filePath,
entities: [DBMatch, DBInfo],
name: "MyConnection1"
});
console.log("DBReader", "connection open");
} catch (e){
console.log("DBReader", "could not open connection", e);
}
return connectionTemp;
然后我同步数据库,创建所有表:
await this.connection.synchronize(false);
像这样将实体写入数据库:
let savedMatch = await this.MatchRepositoryV5.save(dbMatch);
我省略了部分代码,因为我认为它没有必要。
之后我可以从数据库中检索匹配项,但是当重新启动我的程序时,数据库再次完全为空。 我错过了什么?
您需要将 autoSave
连接 属性 设置为 true
所以你初始化连接如下:
let connectionTemp: Connection;
try{
connectionTemp = await createConnection({
type: "sqljs",
location: filePath,
autoSave: true,
entities: [DBMatch, DBInfo],
name: "MyConnection1"
});
console.log("DBReader", "connection open");
} catch (e){
console.log("DBReader", "could not open connection", e);
}
return connectionTemp;