XCFOX

XCFOX

V2EX 第 433443 号会员,加入于 2019-08-01 22:06:00 +08:00
XCFOX 最近回复了
TypeORM

> 当我把一个表字段定义为 nullable: true 或者 nullable: false 的时候,似乎并不影响这个字段在代码里是 optional 还是 required ?

是的,装饰器无法影响 class 内属性的类型。


> 如果我不通过 ORM 自动建表,而是自己在 navicat 里建表,那是不是 TypeORM 里面的 @Column 装饰器参数就没有任何意义?

不完全是,@Column 装饰器参数的主要作用就是生成简表语句,其次 TypeORM 在运行时会通过装饰器参数(元数据)做一些判断,避免一些错误的 SQL 。

> 我定义一个 Entity ,所有字段都是 Not Null 的,类型也都是 required 的,结果 TypeORM 允许我往这个表里保存空对象?等着数据库报错?

是的,装饰器无法影响 class 内属性的类型。但为了更好的类型安全你应该在 tsconfig.json 中配置 strictPropertyInitialization 为 ture ,并为每个属性声明是否为 nullable ( https://typescriptlang.org/tsconfig/#strictPropertyInitialization )

我个人建议你尽早抛弃 TypeORM ,TypeORM 项目已经不再积极维护了。换更严谨 mikro-orm ( https://mikro-orm.io/ ),mikro-orm 能通过 ts-morph 从 class property 提取类型以及 nullable ,能够避免装饰器内 nullable 属性与 class property 声明的 nullable 不一致的情况
https://mikro-orm.io/docs/defining-entities
tRPC 简单但严谨
https://trpc.io/
37 天前
回复了 weiwenhao 创建的主题 前端开发 2024 年 rn 和 flutter 怎么选
React Native 和 Flutter 的思路很不一样。

React Native 秉承 React + web 的理念,使用 React + JavaScript 运行时借助各平台原生组件呈现视图。
React Native 的优势是:可以轻松使用系统原生视图、获得原生级的用户体验和动画流畅度,使用 js ,能够轻松热更新;
React Native 的缺点是:在各个平台呈现的视图不一致;

Flutter 使用自己的绘图引擎,在各个平台上自绘视图,运行机制更接近游戏引擎。
Flutter 的优势是能够自制复杂的视图控,;在所有平台上获得一致的视图;
Flutter 的缺点是:Flutter 的绘图引擎( Skia 、Impeller )比不过原生的动画流畅性和交互体验,这方面有太多的 issues 了:动画反馈会延迟 1~3 帧,无法使用 Android 12 的滚动回弹动画,滑动和翻页时有明显的掉帧,严重的着色器编译时卡顿( https://docs.flutter.dev/perf/shader ) ;难以在 Flutter 视图内嵌入原生组件

另外近些年前端的开发理念一直比较领先,React 虽然稍微落后 vue3 、solidjs 、qwik ,但比起 Flutter 还是领先一个大版本的。Flutter 使用嵌套地狱写视图,React 有 jsx ; React 状态管理的 zustand 、jotai 、valti 一个比一个简单易用,Flutter 连 hook 都没有。

对于不需要复杂的绘图操作的 APP ,也就是普通 新闻、聊天 APP 的话,应该首选 RN + expo ;如果你要开发具有复杂视图的 APP ,比如游戏、谷歌地球、高德地图、Wonderous ,应该首选 Flutter 。
具体到楼主的 记账 APP ,肯定首先 React Native 。

建议体验一下 V2EX 的 Flutter 客户端和 React Native 客户端,Flutter 版本滑动、翻页的时候存在明显卡顿,RN 的体验明显好得多。
https://github.com/guozhigq/flutter_v2ex
https://github.com/liaoliao666/v2ex
46 天前
回复了 Gabrielle70 创建的主题 程序员 求推荐 GraphQL 服务器端(nodejs)框架
推荐 Nest.js ,应该是最完善的 GraphQL(node.js) 框架了,并且有丰富的生态
https://docs.nestjs.com/graphql/quick-start

不喜欢 Nest.js 依赖注入这一套的可以就用 TypeGraphQL: https://typegraphql.com/

如果想要类型安全,推荐 Pothos ,Pothos 的问题是过于学术派以至于开发体验不好,需要写很多冗余重复代码以确保程序正确
https://pothos-graphql.dev
69 天前
回复了 ZoBoat 创建的主题 React 大家什么情况下用 Redux 呢
Redux 早该被扔进垃圾桶。
状态管理建议用 zustand: https://github.com/pmndrs/zustand
97 天前
回复了 qinconquer 创建的主题 问与答 app 软件的登录状态一般是怎么做的呢
都存 redis 了,那用 jwt 设过期时间也没有太大意义了。
我的建议是直接换成类 session token ,格式是 `{user-id}-{random-string}`,拿类 session token 作为键、用户信息作为值存进 redis 。

https://v2ex.com/t/979326
整个项目没有任何性能优化,根组件的 update 将导致整个页面的 update 。没有 memo 。只有两个 useMemo ,其中一个 useMemo 根本没必要,应该直接提升出组件外作为常量。
真喜欢函数直接用 React 就可以了。React 在 16.8 引入 hook 之后已经是函数式完全体了。

React 连组件都是拿函数声明的,state 、reducer 、hook 无不体现函数式的思维。粗看下来 Mithril 的组件还是拿对象来声明,没有贯彻太多函数式的思维。

Mithril 自娱自乐也凑活,真拿来写项目还缺少 路由、状态管理、组件库、SSR 这些必要功能。
141 天前
回复了 chaleaochexist 创建的主题 程序员 关于后端开发分层的疑问
我平常写 node.js 比较多,在 node.js 的世界里几乎见不到 DAO 层。就算是 Spring 味最重的 Nest.js 里也见不到 DAO 层。因为 node.js 的 ORM 很强大很好用,所有 DAO 层的事情 ORM 都干好了,直接在 Service 层里调用 ORM 方法就完事儿了。
我个人理解 DAO 在 Java 、Go 的不使用高自动化 ORM 、需要大量手写 SQL 的项目中会起比较大作用。
对于 Python 来说,如果有好用的 ORM 的话,没必要硬写 DAO ,直接用 ORM 短平快地完成需求岂不美哉。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2186 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
Developed with CodeLauncher
♥ Do have faith in what you're doing.