小编Jir*_*vec的帖子

TypeORM 不更新 MaterializedPath

我正在尝试使用 TypeORM 更新 SQLite3 数据库中的具体化路径。文件夹表(我正在更新)有parent 和parentId 列。当我更新父列时,parentId 列将更新,但 mpath 列不会更新。

我尝试使用 getRepository() 和 getTreeRepository() 进行更新。

我不太确定还要添加什么,请参阅下面所附的模型和更新方法。

模型

@Entity()
@Tree('materialized-path')
export class Folder {

  @PrimaryGeneratedColumn()
  id: number;

  @Column({
    type: 'varchar',
    length: 50
  })
  title: string;

  @TreeParent()
  parent: Folder;

  @TreeChildren()
  children: Folder[];

  @Column({
    nullable: true
  })
  parentId: number;

Run Code Online (Sandbox Code Playgroud)

更新

await connection.getTreeRepository<Folder>(Folder).update(id, {
  parent: await connection.getRepository<Folder>(Folder).findOne(parentId)
});
Run Code Online (Sandbox Code Playgroud)

sqlite node.js materialized-path-pattern typeorm

6
推荐指数
1
解决办法
1394
查看次数

单元测试可注入服务

我在 NX 工作区中执行简单的单元测试时遇到问题。我试图做的是 1) 配置 TestBed 和 2) 注入服务。但是,即使我使用脚手架虚拟服务,测试仍然失败,因为注入的服务据说是undefined

测试.service.ts

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class TestService {
  constructor() { }
}
Run Code Online (Sandbox Code Playgroud)

测试.服务.规格.ts

import { TestBed } from '@angular/core/testing';
import { TestService } from './test.service';

describe('TestService', () => {
  let service: TestService;
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [ TestService ]
    });
    service = TestBed.inject(TestService);
  });
  it('should be created', () => {
    expect(service).toBeTruthy();
  });
});
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会发生这种情况吗?这里到底有什么问题呢?

编辑: 是的,我知道我可以创建一个模拟。然而,这个问题对我来说仍然很奇怪,所以我想弄清楚它的真相,而不是寻找解决方法。

编辑 2:直接 使用ng test …

nomachine-nx karma-runner jestjs angular

5
推荐指数
2
解决办法
2万
查看次数

服务不在 Angular 辅助入口点的“rootDir”下

编译 Angular 库时,我收到有关子库的 rootDir 的错误

library/services/src/public-api.ts:31:15 - error TS6059: File 'C:/libname/library/services/src/orders/orders.service.ts' is not under 'rootDir' 'C:/libname\library\classes\src'. 'rootDir' is expected to contain all source files.

我逐渐认识到,在 Angular 库内部的各个辅助条目之间使用相对导入并不是一个好的做法。所以我将我的代码划分为 TSConfig 中的辅助条目 + 设置路径

代码结构

library
  services
    src
      public-api.ts
    package.json
  models
    src
      public-api.ts
    package.json
  src
    public-api.ts
  package.json
Run Code Online (Sandbox Code Playgroud)

TS配置

{
  "rootDir": "./library/",
  "paths": {
    "@core/services": [ "library/services/src/public-api.ts" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

角度.json

{
  "projects": {
    "lib": {
      "root": "library",
      "sourceRoot": "library"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以问题是 - 如何修复各个辅助入口点或文件结构之间的导入并使项目编译正常?我知道辅助入口点的编译是单独的,并且“被视为一个单独的项目”,因此出现错误。因此,我是否应该添加单独的辅助入口点作为对等依赖项?

当然还有更多路径和辅助端点 - 但这与问题无关,这足以显示我的文件结构和设置

angular angular-library ng-packagr

5
推荐指数
1
解决办法
1503
查看次数