问题标签 [typegoose]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - Typegoose 模型和多对多关系
所以我正在使用 NestJs 和 Typegoose 构建一个后端,具有以下模型:
部
用户
正如您可能猜到的,一个用户可能在多个部门,一个部门可以有多个成员(用户)。由于部门的数量或多或少受到限制(与用户相比),我决定使用一种方式嵌入,如下所述:两种方式嵌入与 MongoDB 中的一种方式嵌入(多对多)。这就是用户持有数组“memberOfDepartments”的原因,但部门不保存成员数组(因为缺少@prop)。
第一个问题是,当我请求 Department-object 时,如何查询它的成员?查询必须查找department._id 在数组memberOfDepartments 中的用户。
我在这里尝试了多种东西,例如虚拟填充:https://typegoose.github.io/typegoose/docs/api/virtuals/#virtual-populate在 department.model 上像这样:
但它不会输出该属性。我的猜测是,这仅适用于一个站点上的一对多...我也尝试使用 set/get,但在使用 DepartmentModel 中的 UserModel 时遇到了麻烦。
目前我在服务中这样做是在“作弊”:
..但我认为这不是正确的解决方案,因为我猜它属于模型。
第二个问题是,我将如何处理一个部门的删除,导致我必须删除对该部门的引用。在用户?
我知道那里有 mongodb 和 mongoose 的文档,但我无法理解如何“以 typegoose 方式”完成此操作,因为 typegoose 文档对我来说似乎非常有限。任何提示表示赞赏。
typescript - Typegoose 和 NestJS:类型上不存在属性“保存”
我正在为我的后端服务器使用 typegoose 和 nestjs。我的pages.service.ts
文件中已经有一个函数可以按 ID 获取单个页面,称为getPageById()
. 当我尝试从pages.services.ts
文件中的另一个调用此函数时,打字稿出现以下错误:
我的page.model.ts
文件看起来像这样
我的pages.service.ts
文件看起来像这样
我需要什么才能让这个工作?
更新
我可以修复错误。我将返回类型更改为Promise<DocumentType<Page>>
这样
但这是解决这个问题的最好方法吗?
node.js - 带有子文档数组的类型鹅 ref
我正在尝试使用 Typegoose 获取嵌套的子文档数组。
在使用 Typegoose 进行重构之前,我使用 mongoose 获得了这个工作代码:
界面 :
架构:
当我执行 Family.findById('5f69aa0a56ca5426b44a86c5') 时,我的 JSON 结果中有一个 Product ObjectId 数组。
重构后,我使用 Typegoose :
班级 :
当我做 :
带有 ObjectId 数组的属性“产品”不在结果中(属性不存在):
我不知道如何使它工作。我认为问题出在家庭类@prop(ref) 中。我看到了一些人们使用 @arrayProp 但现在已弃用的示例。
我找到了关于 ref 的文档,其中包含一个简单的对象,但没有找到 Typegoose 版本 5.9.1 的对象数组。
谢谢
node.js - 如何在 typegoose 中使用更新的钩子?
我添加了一个事件pre
挂钩updateOne
,但它的工作方式与save
事件不同......
我认为这是因为更新命令通常将匹配器作为第一个参数传递。我确实试图捕捉第二个参数,但它是一个匿名函数,我不知道如何使用。
Mongoose 文档讨论了这一点,但我不确定如何直接从 Typegoose 实际修改 Mongoose 模式。
https://mongoosejs.com/docs/middleware.html
注意:与 schema.pre('remove') 不同,Mongoose 默认在 Query#updateOne() 和 Query#deleteOne() 上注册 updateOne 和 deleteOne 中间件。这意味着 doc.updateOne() 和 Model.updateOne() 都会触发 updateOne 钩子,但这指的是查询,而不是文档。要将 updateOne 或 deleteOne 中间件注册为文档中间件,请使用 schema.pre('updateOne', { document: true, query: false })。
编辑:我刚刚更新到最新的包版本不再给出错误,但类型不同。
并且智能感知会检测此 pre updateOne
vs save
hooks的不同类型
pre.updateOne =any
预存=this: DocumentType<Question>
mongodb - typegoose 中枚举的建模列表
我一直在尝试在 typegoose 中对枚举数组进行建模,如下所示,但一直出现编译错误。
我得到的错误信息是:
错误:“User.roles”的类型无效!类型为:“function String() { [native code] }” [E009]
请问我该如何正确操作?
mongodb - Typegoose 和 Mongoose - 保存模式类型的嵌套列表时,转换为 ObjectId 的值失败
收到此错误:
这是父母:
这是孩子:
这是它的调用方式:
typescript - 在带有 typegoose 的 mongoose virtuals 中这个“this”的无法识别的属性
我正在尝试在 typegoose 模型上定义一个虚拟属性。
我收到this
没有属性end
或start
. 有没有办法让它正常工作?
谢谢
mongodb - Mongodb Ref动态填充grapqhl?
我必须根据查询请求来决定是否填充,但我不知道该怎么做。
所以例子
如果我的模型用户看起来像这样
以下语法来自 typegoose 和 typegraphql
这是两个不同的查询
查询1
查询2
在解析器中
Query1 不需要填充
,但 Query2 需要
在同一个解析器中!
我想根据查询的要求来决定是否填充。
在不知道解析器中的实际查询是什么的情况下,我无法决定是否填充。
我在 stackoverflow 中发现了非常相似的问题但是没有正确的答案... 解决 Mongoose 和 GraphQL 中的关系
node.js - Typegoose + nestjs + mongodb:索引未使用@index 装饰器创建
我遇到了 typegoose 的错误。我有一个名为的模型SP
,我必须在其属性上创建 2dsphere 索引,名为geoLocation
我尝试过 typegoose 装饰器@index
,但它无法正常工作,即使它没有抛出任何错误,我不知道发生了什么以及 typegoose 如何处理它。有没有人给我解决方案。
代码: