【问题标题】:Missing propertys on mongoose query猫鼬查询中缺少属性
【发布时间】:2021-02-23 05:20:01
【问题描述】:

我将 MongoDB、Mongoose 与 typescript 结合使用。我的问题如下:

我已经定义了一个这样的模型:

export default conn.model<AdminInterface & Document>('Admin', adminSchema)

export interface AdminInterface {
  email: string,
  password: string,
  role: string,
  created: Date,
  author: {
    name: string,
    bio: string,
    githubUrl: string,
    stackoverflowLink: string,
    twitterLink: string,
    image: string,
    image_webp: string,
  },
}

它不会引发错误。

现在我想做一个简单的查询,例如:

import { AdminInterface } from "../model/admin"
export function getAdmin(): Promise<AdminInterface | null> {
  return Admin.findOne({ role: 'admin' }, { password: 0 })
}

但它给我抛出了这个错误:

类型“DocumentQuery”缺少类型“AdminInterface”中的以下属性:电子邮件、密码、角色、已创建、作者

我做错了什么?我如何告诉.findOne 方法我的响应会是什么样子?

【问题讨论】:

  • findOne 是异步的,也许您返回的是 Promise 并且承诺字段与您的界面不匹配?
  • @J.F.是的,它返回了我现在尝试过的承诺Promise&lt;AdminInterface&gt; 没有帮助。我试过Promise&lt;any&gt;什么都没有

标签: javascript mongodb typescript mongoose


【解决方案1】:

好的,这就是解决方案。

我必须在末尾添加.exec() 并且错误消失了:

import { AdminInterface } from "../model/admin"
export function getAdmin(): Promise<AdminInterface | null> {
  return Admin.findOne({ role: 'admin' }, { password: 0 }).exec()
}

我不知道这是否是要走的路。但是我会这样使用它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2013-05-06
    • 2020-06-02
    • 2012-02-03
    • 2018-07-15
    • 2017-05-08
    • 2019-02-14
    相关资源
    最近更新 更多