猫鼬查询缺少属性

时间:2020-11-11 08:34:31

标签: javascript mongodb typescript mongoose

我正在使用MongoDB和Mongoose结合打字稿。我的问题如下:

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

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方法我的回复是什么样?

1 个答案:

答案 0 :(得分:1)

好的,这是解决方法。

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

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

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