NestJS 包含许多工具,这些工具似乎充当中间件的特殊版本,例如防护程序、拦截器和过滤器。
所有这些之间的执行顺序是什么?
我的理解是执行顺序是这样的:
中间件 -> 守卫 -> 拦截器 -> 管道 -> 控制器 -> 拦截器 ->res.on('finish')在中间件中设置的处理程序
使用 vanilla Mongoose 时,可以直接向 Mongoose schemas 添加方法。Mongoose 文档很好地解决了这个问题,并且可以找到几个示例。
但是当您在 Nest 应用程序的上下文中使用 Mongoose 时呢?我希望我的 Mongoose 模式更像“Nest”,所以我使用了 Mongoose ( @nestjs/mongoose)的 Nest 包装器。但是,@nestjs/mongoose似乎缺少的文档。我能找到的与任何文档最接近的内容是在 Nest 应用程序中使用 MongoDB 的指南,其中仅包括 Mongoose 最绝对的基本用例。
在我看来,Mongoose 在 Nest 世界中的使用方式与 vanilla Mongoose 使用的方式大不相同。也许这只是缺乏对 TypeScript 或 Nest 的熟悉,但我似乎无法真正了解这些差异,而且缺乏示例也无济于事。
我在 StackOverflow 上看到了一些关于如何实现这一点的答案,例如:
我怎么能做这样的事情?
架构
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { …Run Code Online (Sandbox Code Playgroud) 假设 MongoDB 中有 3 个假设的集合:customers、orders和orderItems。
每个客户有多个订单,每个订单有多个订单项目。
以下是这 3 个集合的一些示例数据:
[
{
customer_id: 1,
name: "Jim Smith",
email: "jim.smith@example.com"
},
{
customer_id: 2,
name: "Bob Jones",
email: "bob.jones@example.com"
}
]
Run Code Online (Sandbox Code Playgroud)
[
{
order_id: 1,
customer_id: 1
},
{
order_id: 2,
customer_id: 1
}
]
Run Code Online (Sandbox Code Playgroud)
[
{
order_item_id: 1,
name: "Foo",
price: 4.99,
order_id: 1
},
{
order_item_id: 2,
name: "Bar",
price: 17.99,
order_id: 1
},
{
order_item_id: 3,
name: "baz",
price: 24.99, …Run Code Online (Sandbox Code Playgroud) 我\xe2\x80\x99m 努力理解 TypeScript 中 Maybe 类型的价值。I\xe2\x80\x99m 试图理解本文中有关在 TypeScript 中实现您自己的 Maybe 类型的代码示例:
\nenum MaybeType {\n Just = \'maybe-type__just\',\n Nothing = \'maybe-type__nothing\',\n}\n\ninterface Just<T> {\n type: typeof MaybeType.Just\n value: T\n}\n\ninterface Nothing {\n type: typeof MaybeType.Nothing\n}\n\ntype Maybe<T>\n = Just<T>\n | Nothing\n\nconst Nothing = (): Nothing => ({\n type: MaybeType.Nothing,\n})\n\nconst Just = <T> (value: T): Just<T> => ({\n type: MaybeType.Just,\n value,\n})\nRun Code Online (Sandbox Code Playgroud)\n这实际上有什么用?我不明白\xe2\x80\x99 不明白它\xe2\x80\x99s 比一个类型更好T | undefined。
我(非常有限)的理解是 Maybe 类型可以使您免受某些运行时错误的影响,并消除整个代码中对 null/未定义检查的需要。但是,\xe2\x80\x99 难道你只是用undefined在代码中散布的支票来交换Nothing在代码中散布的支票吗?
在此示例中,Nothing …
nestjs ×2
typescript ×2
javascript ×1
middleware ×1
monads ×1
mongodb ×1
mongoose ×1
node.js ×1
nosql ×1
option-type ×1