我使用的是 Angular 10,单击后将执行以下函数来执行方向更改:
private changeHtmlDirection(direction: 'rtl' | 'ltr') {
document.getElementsByTagName("html")[0].dir = direction;
}
Run Code Online (Sandbox Code Playgroud)
它运行良好,只是 Angular CDK 没有更新。
我试图找到一个 API 来在运行时更改 Angular CDK 的方向,但没有找到。我看到有一个BidiModule,但它仅用于获取当前方向而不是设置它。
有什么解决办法吗?
我正在尝试创建一个连接到 postgresql 数据库的 TypeORM 查询生成器以获取数据库中的所有唯一名称。我的查询看起来像这样
names = await this._context.manager
.getRepository(Names)
.createQueryBuilder('names')
.select('DISTINCT ON (names.name) names.name')
.orderBy('names.name', 'ASC')
.getRawMany();
Run Code Online (Sandbox Code Playgroud)
现在,此查询会获取数据库中的所有名称,但它区分大小写,因此无法从“jane doe”中筛选出“Jane Doe”等重复项。到目前为止,我已经尝试像这样制作不同的大写/小写:
.select('DISTINCT ON LOWER(names.name) names.name')但这不起作用。我还找到了一个 .distinctOn() 函数,但我也无法使该函数不区分大小写。
我是 typeORM 的新手,所以我对从这里去哪里有点茫然,有什么想法吗?
我正在使用 Node.JS 开发 postgresql DB,如果这有什么区别的话。
我的用户和项目的多对多关系如下:
// project.entity.ts
@Entity()
export class Project extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToMany(type => ProjectUser, projectUser => projectUser.project)
projectUsers: ProjectUser[];
@CreateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', readonly: true })
createdAt: Date;
@UpdateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
updatedAt: Date;
@DeleteDateColumn({ type: 'timestamp' })
deletedAt: Date;
}
Run Code Online (Sandbox Code Playgroud)
// user.entity.ts
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
email: string;
@Column()
password: string;
@OneToMany(type => ProjectUser, projectUser => projectUser.user)
projectUsers: ProjectUser;
@CreateDateColumn({ …Run Code Online (Sandbox Code Playgroud) 我想在运行时将参数传递给 TypeScript 装饰器,以便装饰方法将使用该参数,原始方法不需要此参数才能运行,但装饰器需要。
我尝试通过将参数传递给装饰方法,然后在装饰器中的原始方法的参数中找到它来实现这一点。
例如我尝试过的:
// calling a decorated method (nestJS code)
@Get('')
@UseGuards(JwtAuthGuard)
async getAll(@CurrentUser() user: User): Promise<any[]> {
//current user is a nestJS decorator extracts the user from the http header
const res = await this.whateverService.original(user);
return res;
}
// @MyDecorator usage
@MyDecorator()
async original(@user user: User): Promise<any>{
// return get all whatever
}
// @MyDecorator decorator
export function MyDecorator() {
return function (target: Object, propertyName: string | symbol, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
// get …Run Code Online (Sandbox Code Playgroud) 我有一个用node.js和nestJs编写的服务器端,用typeorm进行查询。
我正在尝试按照此处建议的事务将一些查询包装到数据库中,并进行一些受 typeorm文档启发的更改,如下所示:
getManager().transaction(async transactionalEntityManager => {
transactionalEntityManager.save<Entity>(newEntity)
transactionalEntityManager.save<Entity1>(newEntity1)
});
Run Code Online (Sandbox Code Playgroud)
事务运行良好,如果出现错误则回滚数据库。测试这样:
getManager().transaction(async transactionalEntityManager => {
transactionalEntityManager.save<Entity>(newEntity)
throw 'There is an error'
transactionalEntityManager.save<Entity1>(newEntity1)
});
Run Code Online (Sandbox Code Playgroud)
事务的执行在 graphQL Mutation 内部,因此如果出现问题,我应该向客户端返回错误,问题是我无法捕获事务中的错误。
尝试这样做:
@Mutation(returns => Entity)
async create(): Promise<Entity> {
let entity = null;
let error = null;
getManager().transaction(async transactionalEntityManager => {
try {
entity = await transactionalEntityManager.save<Entity>(newEntity)
await transactionalEntityManager.save<Entity1>(newEntity1);
} catch (err) {
error = err
}
})
if (error) {
return error
}
return entity
}
Run Code Online (Sandbox Code Playgroud)
当我抛出错误时,我成功捕获它,但是当发生真正的错误时,我可以console.log()在服务器中处理它,但它永远不会返回到客户端。
我是 TypeORM 的新手,我有问题要解决。我想知道如何在 INSERT 查询后检索 ID。我的实体中有带有 ID 号的列 @PrimaryGeneratedColumn(),我的代码看起来类似于:
await getConnection()
.createQueryBuilder()
.insert()
.into(Test)
.values([
{ firstName: "test", lastName: "test" }
])
.execute();
Run Code Online (Sandbox Code Playgroud)
我想要归档的是在执行此函数后返回插入行的 ID。
编辑:我正在使用 MySQL。
那可能吗?
谢谢。
typeorm ×4
angular ×3
javascript ×2
nestjs ×2
postgresql ×2
typescript ×2
angular-cdk ×1
css ×1
datepicker ×1
decorator ×1
dom ×1
graphql ×1
html ×1
node.js ×1