问题标签 [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 - elemMatch 用于不同级别的字段
在尝试解决这个问题一整天后,我在问这个问题。我想得到我的用户userId
地址addressId
。由于我从发布请求中接收数据,因此我需要确保查询包含两者userId
,addressId
以避免安全问题。下面的查询结果返回我用户的所有地址,而不仅仅是包含正确addressId
.
由于不可能$elemMatch
在不同的文档级别使用,甚至无法在查询的顶层使用,我找不到更好的方法来进行此查询而不使用过滤器。有什么见解吗?
提前谢谢
typescript - 从扩展 Typegoose 并包含静态类型特定方法的父类继承
我正在使用 TypeScript 和 Node JS 开发服务器,并且正在使用 Typegoose 库将类映射到 MongoDB 文档中。
我有以下两个课程:
很容易注意到有类似定义的方法id()
:model()
和attachDocument()
。我需要这些方法来抽象 Typegoose 的行为以及对服务器其余部分的查询执行。有没有办法定义一个超类,以便它们可以从这个超类中删除和继承这三个Mode
方法Player
?
我在想这样的事情:
但是,这似乎不可行,因为我不能将 T 作为参数传递给getModelForClass()
方法。我已经看到它接受 type 的参数new () => T
,但我还没有找到任何正确使用它的方法。
nestjs - 在 NestJs + Typegoose 中将 _id 替换为 id
我使用 NestJs + Typegoose。如何在 NestJs + Typegoose 中将 _id 替换为 id?我没有找到一个明确的例子。我尝试了一些东西,但没有任何结果。
typescript - 验证失败:转换为数组的值失败
我正在尝试将 Typegoose 与 GrqphQL、MongoDB 和 Nest.js 一起使用。我想创建一个可以创建帖子的突变。我为简单的Post创建了模型、服务和解析器。当我尝试运行我的突变来创建一个帖子时,我收到了这个错误:
PostModel 验证失败:部分:Cast to Array 的值失败:
在路径“部分”
我不知道为什么会收到我尝试使用的此错误:ref,itemsRefs(用于类和字符串值。您可以在此处阅读有关此内容的更多信息:typegoose arrayProp)。创建新属性后PostModel
,我console.log
可以看到每个属性sections
都是一个空数组,但它不应该,因为在里面postInput
我可以找到这个 JSON:
我认为这个 json 看起来不错,所以它不应该是这个错误的来源。
我想知道我做错了什么以及为什么它不起作用。下面我附上了一些代码。如果您需要其他任何内容,请在评论中告诉我。
GraphQL 突变:
post.service.ts:
post.model.ts:
section.model.ts:
创建 post.input.ts:
更新 1
我发现如果我在部分正文中传递一个空数组,那么创建帖子就没有问题。我在下面附上示例查询:
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']'。
如果有人知道这里发生了什么,那就太好了!
typescript - TypeScript 中导入对象的模拟函数
我有一个 TypeScript 文件,它导出两个对象(由Typegoose创建)。
我将脚本导入到被测脚本中。
现在我试图模拟 call MyDocumentModel.create(doc)
。
但我收到以下错误 - Number of calls: 0
。
如何模拟导入对象的函数?
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
typescript - 如何获取typegoose类模型接口
我想为 Mongo 模型函数创建一个抽象。并搜索如何从 typegoose 类中重用模型接口。
我想要一个像这样的功能:
国家型号:
但是当尝试将对象传递{ name : 'country name', code: 'code', fag: 'flag' }
给saveCountry
函数时出现错误:
2345:类型参数'{名称:字符串;代码:字符串;标志:字符串;}' 不能分配给 '...ing; 类型的参数;}' 缺少“国家/地区”类型的以下属性:getModelForClass、setModelForClass、buildSchema
graphql - 子解析器上的 NestJS x Graphql x Typegoose 问题
我遇到了接口类型和架构公共部分的一些子解析器的问题,这是我的代码和问题。我这样声明可能是错误的,但我给了你目标,如果你有任何其他符合需要的设计,请随时与我分享。
我将 NestJS 7+、Typegoose 和 Nest Graphql 与定义注释自动的 CLI 插件一起使用。
我有一个应用程序,其中有两种用户:Professional和Individual。
在数据库中,它们保存在一个通用文档下,共同的字段存在于文档正文中,而专门的字段存在于是否
individual
或legalEntity
键(它是一个对象)中。
现在这里是我的子解析器,用于使两个名为的子字段通用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>
你有什么建议/想法吗?
谢谢你,安德烈亚斯
javascript - Typegoose 类作为类型?
我有一个客户端类,我想使用我的 typegoose 模型。我了解如何使用它,我只是在努力设法让类型和智能感知与它一起工作。我将类导出为MemberClass
,模型导出为Member
. 这是一个样本,我只是在努力填补空白
欢迎任何帮助!如果需要,我可以提供整个文件