Я использую Typescript и Mon goose с GraphQL. В настоящее время, когда я запрашиваю (т.е. выполняю findOne
) модель, возникает следующая проблема:
В типе «Promise» отсутствуют следующие свойства из типа «Account»: displayName, id, rpDisplayName
Для контекста ниже приведен соответствующий код. Я не понимаю, почему свойства считаются «отсутствующими» в разрешенной модели.
import { Document, model, Schema } from "mongoose";
const AccountSchema = new Schema({
entity: {
type: String,
enum: ["consumer", "provider"],
default: "consumer"
},
name: {
type: String,
required: true
},
createdAt: {
type: Date,
default: Date.now
}
});
export enum AccountEntity {
CONSUMER = "consumer",
PROVIDER = "provider"
}
export interface AccountModel extends Document {
entity: AccountEntity;
name: string;
createdAt?: Date;
}
export interface AccountPayload {
entity: AccountModel["entity"];
name: AccountModel["name"];
}
const Account = model<AccountModel>("Account", AccountSchema);
export default Account;
import { QueryResolvers, QueryAccountArgs } from "../generated/graphql-types";
import Account from "../models/account";
const query: QueryResolvers = {
account: (_: any, { payload }: QueryAccountArgs): Account =>
Account.findOne({ _id: payload.id })
.exec()
.then(
model => {
if (!model) {
throw Error(`Unable to find account with id ${payload.id}`);
}
return model;
},
reason => {
throw Error(reason);
}
)
};
export default query;