问题标签 [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.

0 投票
0 回答
47 浏览

mongodb - elemMatch 用于不同级别的字段

在尝试解决这个问题一整天后,我在问这个问题。我想得到我的用户userId地址addressId。由于我从发布请求中接收数据,因此我需要确保查询包含两者userIdaddressId以避免安全问题。下面的查询结果返回我用户的所有地址,而不仅仅是包含正确addressId.

由于不可能$elemMatch在不同的文档级别使用,甚至无法在查询的顶层使用,我找不到更好的方法来进行此查询而不使用过滤器。有什么见解吗?

提前谢谢

0 投票
1 回答
1210 浏览

typescript - 从扩展 Typegoose 并包含静态类型特定方法的父类继承

我正在使用 TypeScript 和 Node JS 开发服务器,并且正在使用 Typegoose 库将类映射到 MongoDB 文档中。

我有以下两个课程:

很容易注意到有类似定义的方法id()model()attachDocument()。我需要这些方法来抽象 Typegoose 的行为以及对服务器其余部分的查询执行。有没有办法定义一个超类,以便它们可以从这个超类中删除和继承这三个Mode方法Player

我在想这样的事情:

但是,这似乎不可行,因为我不能将 T 作为参数传递给getModelForClass()方法。我已经看到它接受 type 的参数new () => T,但我还没有找到任何正确使用它的方法。

0 投票
3 回答
2785 浏览

nestjs - 在 NestJs + Typegoose 中将 _id 替换为 id

我使用 NestJs + Typegoose。如何在 NestJs + Typegoose 中将 _id 替换为 id?我没有找到一个明确的例子。我尝试了一些东西,但没有任何结果。

0 投票
1 回答
530 浏览

typescript - 验证失败:转换为数组的值失败

我正在尝试将 Typegoose 与 GrqphQL、MongoDB 和 Nest.js 一起使用。我想创建一个可以创建帖子的突变。我为简单的Post创建了模型、服务和解析器。当我尝试运行我的突变来创建一个帖子时,我收到了这个错误:

PostModel 验证失败:部分:Cast to Array 的值失败:

在路径“部分”

我不知道为什么会收到我尝试使用的此错误:refitemsRefs(用于类和字符串值。您可以在此处阅读有关此内容的更多信息:typegoose arrayProp)。创建新属性后PostModel,我console.log可以看到每个属性sections都是一个空数组,但它不应该,因为在里面postInput我可以找到这个 JSON:

我认为这个 json 看起来不错,所以它不应该是这个错误的来源。

我想知道我做错了什么以及为什么它不起作用。下面我附上了一些代码。如果您需要其他任何内容,请在评论中告诉我。

GraphQL 突变

post.service.ts

post.model.ts

section.model.ts

创建 post.input.ts

更新 1

我发现如果我在部分正文中传递一个空数组,那么创建帖子就没有问题。我在下面附上示例查询:

0 投票
1 回答
365 浏览

mongoose - Apollo 服务器不会在子对象中序列化来自 Mongoose 的虚拟属性

这是我的打字稿对象(简化):

它使用 type-graphql 生成此模式:

我使用解析器来查询用户的游戏:

它会产生此错误:“GraphQL 错误:无法为不可为空的字段 Player.id 返回 null”

我已经知道的:

  • 游戏和玩家“id”字段是由 Mongoose 创建的“虚拟”字段,作为真实属性“_id”的别名(我不想在前端操作 _id,我想序列化别名)。
  • 如果我不查询游戏的玩家,它会起作用。所以 Game.id 由我的 apollo 服务器解析器正确序列化。所以对于这个对象,虚拟属性被正确地访问和序列化。
  • 玩家 ID 存在并且虚拟属性在猫鼬方面有效:如果我执行 console.log(mongooseResult[0].players[0].id),我可以在控制台中看到我的玩家 ID。
  • 假设 Apollo 服务器对 player.id 使用此默认字段解析器: https ://github.com/graphql/graphql-js/blob/master/src/execution/execute.js#L1181-L1199 (文档:https:// /www.apollographql.com/docs/apollo-server/data/resolvers/#default-resolvers)。根据源代码,虚拟属性应该被序列化,因为它是这样访问的:'player['id']'。

如果有人知道这里发生了什么,那就太好了!

0 投票
1 回答
457 浏览

typescript - TypeScript 中导入对象的模拟函数

我有一个 TypeScript 文件,它导出两个对象(由Typegoose创建)。

我将脚本导入到被测脚本中。

现在我试图模拟 call MyDocumentModel.create(doc)

但我收到以下错误 - Number of calls: 0

如何模拟导入对象的函数?

0 投票
1 回答
290 浏览

node.js - setDefaultsOnInsert 不适用于 upsert

我正在使用 typegoose 创建一个模式,我在其中定义属性的默认字段。这意味着如果我没有在 setQuery 中为该字段设置值,它应该在插入时使用架构中的默认值。

这不适updateOne用于我将选项设置为的方法{upsert: true, setDefaultsOnInsert: true}

同时,如果我使用create,则默认设置正确。

Mongoose:5.7.14 MongoDB:3.2.20 节点:8 Typescript:3.8.3 Typegoose:5.9.1

0 投票
1 回答
1127 浏览

typescript - 如何获取typegoose类模型接口

我想为 Mongo 模型函数创建一个抽象。并搜索如何从 typegoose 类中重用模型接口。

我想要一个像这样的功能:

国家型号:

但是当尝试将对象传递{ name : 'country name', code: 'code', fag: 'flag' }saveCountry函数时出现错误:

2345:类型参数'{名​​称:字符串;代码:字符串;标志:字符串;}' 不能分配给 '...ing; 类型的参数;}' 缺少“国家/地区”类型的以下属性:getModelForClass、setModelForClass、buildSchema

0 投票
1 回答
463 浏览

graphql - 子解析器上的 NestJS x Graphql x Typegoose 问题

我遇到了接口类型和架构公共部分的一些子解析器的问题,这是我的代码和问题。我这样声明可能是错误的,但我给了你目标,如果你有任何其他符合需要的设计,请随时与我分享。

我将 NestJS 7+、Typegoose 和 Nest Graphql 与定义注释自动的 CLI 插件一起使用。

我有一个应用程序,其中有两种用户:ProfessionalIndividual

在数据库中,它们保存在一个通用文档下,共同的字段存在于文档正文中,而专门的字段存在于是否 individuallegalEntity键(它是一个对象)中。

现在这里是我的子解析器,用于使两个名为的子字段通用suppliers

我现在得到

(node:58160) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'properties' of undefined

任何想法?看起来像 du to @Resolver(() => CurrentUserDTO)CurrentUserDTO在 compileExternalFieldResolverMetadata 的 this.objectTypes 中不存在

如果我尝试在@ObjectType()以下@InterfaceType添加CurrentUserDTO

我知道Error: Schema must contain uniquely named types but contains multiple types named "CurrentUserDTO".哪个是正常的......因此我不知道......如何为接口类型定义 sub_resolver 我已经死了......</p>

你有什么建议/想法吗?

谢谢你,安德烈亚斯

0 投票
1 回答
107 浏览

javascript - Typegoose 类作为类型?

我有一个客户端类,我想使用我的 typegoose 模型。我了解如何使用它,我只是在努力设法让类型和智能感知与它一起工作。我将类导出为MemberClass,模型导出为Member. 这是一个样本,我只是在努力填补空白

欢迎任何帮助!如果需要,我可以提供整个文件