我有一个项目使用 typeorm 来创建数据库。当我执行命令来生成到我的项目的迁移时,它给了我错误
我有以下 orm 配置 json 文件:
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "",
"database": "postgres",
"synchronize": true,
"logging": false,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个用户实体类:
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
import { Transaction } from "./Transactions";
export type UserStatus = "Active" | "Inactive";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column("varchar",{
length:50 …Run Code Online (Sandbox Code Playgroud) 我的客户期望所有成功的状态代码都等于 200。但是 NestJS 默认对所有 POST 方法使用 201。如何在应用程序范围内禁用 POST 201?不是针对一种方法,而是针对整个应用程序。
假设我的 Nestjs 后端有一个 /createPost POST 端点。请求和响应对象应通过 DTO 在后端完全键入。但是,如何将这些类型引入前端?我想要一个输入的帖子请求对象,这样我就无法在帖子正文中输入无效字段或缺少字段。我还希望有一个用于响应的打字稿界面。我想重用后端的代码。解决这个问题的最佳方法是什么?是否有某种类型生成器库?
使用 axios http 客户端将具有 UTF-8 文件名的文件 POST 到 Multer 的正确方法是什么?Chrome 似乎正在为 multipart/form-data 正文发送正确编码的有效负载
以前,TypeORM 存储库可以扩展并直接注入到服务中,例如:
import { User } from './entities/user.entity';
import { EntityRepository, Repository } from 'typeorm';
@EntityRepository(User)
export class UsersRepo extends Repository<User> {
// my custom repo methods
}
Run Code Online (Sandbox Code Playgroud)
import { Injectable } from '@nestjs/common'
import { UsersRepo } from './users.repo';
@Injectable()
export class UsersService {
constructor(private readonly usersRepo: UsersRepo) {}
}
Run Code Online (Sandbox Code Playgroud)
但从 3.0.0 版本开始,TypeORM不支持通过继承扩展存储库。
如何在 NestJS 9(依赖于 TypeORM 3.+)中实现这样的行为?我想到的唯一解决方案是将自定义方法添加到服务层。但我想将所有与 ORM 相关的方法(查询、聚合等)保留在存储库层中。
import { IsString, IsNumber, IsOptional, IsUUID, Min, Max } from 'class-validator';
import { Transform } from 'class-transformer';
export class QueryCollateralTypeDto {
@Transform(({ value }) => parseInt(value))
@IsNumber()
@IsOptional()
page: number;
@Transform(({ value }) => parseInt(value))
@IsNumber()
@IsOptional()
limit: number;
@IsString()
@IsOptional()
select: string;
}
Run Code Online (Sandbox Code Playgroud)
我想设置页面的默认整数值以及选择的限制和字符串值(例如整数 1 的页面值、整数 10 的限制值以及“field1,field2,...”的选择值)
我发现节点版本18.12.0和 mongodb存在一个问题6.0.2。我已经使用 mongodb 构建了一个 Nestjs 应用程序。这里我使用@nestjs/mongoose(v- 9.0.2)和mongoose (v-6.7.0)
在这里我可以看到,当我将 Node js 升级到最新的 lts 版本时,我无法连接到 mongodb。它显示类似的错误unable to connect to database。
但是当我降级到节点版本16.18.0时,它工作正常。我的问题是你们已经面临这个问题,或者我是唯一遇到这个问题的人。如果你知道的话,那么问题到底出在哪里呢?
这是我的连接代码-
MongooseModule.forRoot("mongodb://localhost:27017/nekmart", {
connectionFactory: (connection) => {
connection.plugin(slug, { number: true });
return connection
}
}),
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含 NestJs API、React 应用程序以及它们之间共享的许多其他较小项目的 monorepo
\nmonorepo 设置了纱线工作区
\n使用 Vite 的 React 应用程序可以完美地导入和编译常见项目,但 NestJs api 永远不会编译,通常会给出错误SyntaxError: Unexpected token \'export\'。
我制作了一个最小的存储库,其中仅包含一个基本的 Nest 项目和一个公共文件夹,以尝试使用以下结构进行单个函数导入:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common # Sample common project\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig \n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src \n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.ts # The file called from the api\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 api # NestJs API\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig \n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src \n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json # Yarn workspace setup\nRun Code Online (Sandbox Code Playgroud)\n主要的package.json:
\n{\n "name": "mono",\n "workspaces": [\n …Run Code Online (Sandbox Code Playgroud) 我在嵌套构建脚本期间收到以下错误:
Error Debug Failure. False expression: import= for internal module references should be handled in an earlier transformer.
我无法理解它的含义。希望筑巢阶段成功
我需要 nestjs 和 jest 测试方面的帮助。我是 NestJS 的新手,在运行测试时遇到了无法找到模块错误的问题。
我正在尝试测试我的服务,当我运行测试时,我收到了错误消息:
src/article/article.service.spec.ts ? 测试套件无法运行
Cannot find module 'src/article/article.entity' from 'comment/comment.entity.ts'
Require stack:
comment/comment.entity.ts
article/article.entity.ts
article/article.service.spec.ts
6 | ManyToOne,
7 | } from 'typeorm';
> 8 | import { Article } from 'src/article/article.entity';
| ^
9 |
10 | @Entity()
11 | export class Comment {
at Resolver.resolveModule (../node_modules/jest-resolve/build/index.js:307:11)
at Object.<anonymous> (comment/comment.entity.ts:8:1)
Run Code Online (Sandbox Code Playgroud)
这种类似的错误通过不同控制器、服务等的所有其他测试出现。
这是我要测试的代码。
article.service.ts
import { Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm";
import { Article } from "./article.entity";
import …Run Code Online (Sandbox Code Playgroud) nestjs ×10
node.js ×5
typescript ×4
javascript ×2
typeorm ×2
default ×1
jestjs ×1
mongodb ×1
mongoose ×1
monorepo ×1
multer ×1
orm ×1
postgresql ×1
reactjs ×1
rest ×1
testing ×1
unit-testing ×1
utf-8 ×1
validation ×1
workspace ×1