import { getModelForClass, index, modelOptions, plugin, prop } from '@typegoose/typegoose'; import {dbconn} from '../decorators/dbconn'; // @ts-ignore import findOrCreate from 'mongoose-findorcreate'; import { Base, FindOrCreate, TimeStamps } from "@typegoose/typegoose/lib/defaultClasses"; interface AccountTmpClass extends Base, TimeStamps {} @dbconn() @index({ openid: 1}, { unique: true }) @modelOptions({schemaOptions: {collection: "account_login", timestamps: true}}) @plugin(findOrCreate) class AccountTmpClass extends FindOrCreate{ @prop() public openid: string; @prop() public unionid: string; @prop() public nickname: string; @prop() public headimgurl?: string; @prop() public province?: string; @prop() public city?: string; @prop() public sex?: string; @prop() public lastLogin: number; @prop() public loginCount: number; @prop() public geted: boolean; public static async findByName(username) { return AccountTmp.findOne({username}); } public toJson() { return { openid: this['openid'], nickname: this.nickname, avatar: this.headimgurl, province: this.province, city: this.city, sex: this.sex, lastlogin: this.lastLogin, logincount: this.loginCount } } } export const AccountTmp = getModelForClass(AccountTmpClass, {existingConnection: AccountTmpClass['db']});