我正在尝试使用 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) 我在 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 …
编译 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 ×2
jestjs ×1
karma-runner ×1
ng-packagr ×1
node.js ×1
nomachine-nx ×1
sqlite ×1
typeorm ×1