重新启动后,TypeORM数据库始终为空



我刚开始使用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;

最新更新