如何在打字稿/猫鼬中访问填充文档的字段?



我正在填充Customer用helper类建模并转换它。但是我不能访问填充字段的子字段。

<<p>订单模型/strong>
const orderSchema = new Schema<IOrder>({
customerID: {
type: Schema.Types.ObjectId,
ref: "Customer",
required: true,
}
}
export const OrderModel = model<IOrder, IOrderModel>("Order", orderSchema);
<<p>命令接口/strong>
export interface IOrder{
_id?: Schema.Types.ObjectId;
customerID: Schema.Types.ObjectId;
}
export interface IOrderModel extends Model<IOrder> {
}

命令助手

export class OrderHelper {
private customer: Schema.Types.ObjectId;
constructor(model: IOrder) {
this.customer = model.customerID;
}
}
<<p>订单服务/strong>
class OrderService {
private readonly orderRepository: OrderRepository;
constructor() {
this.orderRepository = new OrderRepository();
}
public async getProducts(request: Request) {
const products = await this.orderRepository.findOrders(request.body);
const data: ProductsHelper[] = [];
for (let key in products) data.push(new ProductsHelper(products[key]));
return data;
}
}

订单库


export class OrderRepository {
constructor() {
}
public async findOrders(body: Partial<IOrder>) {
const orders = await OrderModel.find(body)
.populate({
path: "customerID",
select: ["customerCode", "citizenship", "passportSerial"],
}).lean();
return orders;
}
}

例如,我想访问Customer的customerCode字段。但是它给了我TypeError,没有customerCode字段。我该如何解决这个问题?它是否与接口/类型或其他东西有关?

您应该在订单接口和助手中声明客户的类型。然后,您将能够访问它的(给定接口的)字段。

最新更新