mongoose 如何在typescript中使用Schema.virtual?

nxagd54h  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(190)

我在js中使用schema.virtual属性,但是现在我想在tyescript中使用它,并且得到错误。

UserSchema.virtual('fullname').get(function () {
  return `${this.firstName} ${this.lastName}`
});

我面临这个错误

this' implicitly has type 'any' because it does not have a type annotation.
2w2cym1i

2w2cym1i1#

有一些解决方案可以解决这个特定的问题,例如declaring an interface用于键入this,但根据我的经验,这将产生其他问题(其中一个问题是doc.fullname将导致错误,因为TS不够智能,无法知道fullname已作为虚拟对象添加)。
解决这个问题最简单的方法是将虚拟值作为Schema声明的一部分:

const UserSchema = new mongoose.Schema({
  firstName : String,
  lastName  : String,
  ...
}, {
  virtuals : {
    fullname : {
      get() {
        return `${this.firstName} ${this.lastName}`;
      }
    }
  }
});

相关问题