在我的应用程序中,我对Mongo收集方法的响应做了一些工作,并希望通过键入它们来使事情变得更容易,但似乎找不到如何做到这一点。
其中一个例子是deleteMany
。
{ "acknowledged" : true, "deletedCount" : X }
是不是有一个类型的地方为这个?或者我需要手动键入它在我的结束?
不幸的是,当从旧版本的mongo升级到v6时,这导致了一个问题,因为响应不再包含ok
。如果有一个来自Mongo的类型,当属性不再存在时,它会显示TS错误,那就太好了。
代码看起来像这样:
const res = await this.deleteMany(query) // res is currently an any type
if (res.deletedCount > 10) {
// do something
} else {
// do something else
}
问题是res
的类型是any
,我想知道我是否真的需要构造自己的类型,或者我可以从某个地方导入它,以防在以后的版本中发生更改。
谢谢
2条答案
按热度按时间iqih9akk1#
您提到的文档页面包含以下注解:
本页记录了一个mongosh方法。这不是数据库命令或特定于语言的驱动程序(如Node.js)的文档。
node.js驱动程序中该函数的正确文档是:https://mongodb.github.io/node-mongodb-native/5.2/classes/Collection.html#deleteMany
这告诉我们返回类型是'Promise< DeleteResult >'
2vuwiymt2#
如果你有正确的
mongodb
Node.js驱动程序版本(截至撰写本文时为5.2.0),你应该有内置的TypeScript定义。这样,您的
res
变量应该正确地类型为DeleteResult
,并指出缺少的ok
属性:Playground链接
显然,首先要确保您的
this
上下文被正确地类型化为Mongo Collection。