带有typegoose的mongoose返回null,以便使用有效的objectId进行引用

问题描述 投票:0回答:1

我正在使用库https://github.com/szokodiakos/typegoose来创建猫鼬模型。

Item.ts

export class Item extends Typegoose { }

const ItemModel = new Item().getModelForClass(Item);
export default ItemModel;

User.ts

import { InventoryItem } from "./InventoryItem";

export class BagItem extends Typegoose {
  @prop({ ref: Item })
  Item?: Ref<Item>;

  @prop()
  Quantity: Number;
}

export class User extends Typegoose {
  @arrayProp({ items: BagItem })
  Bag?: BagItem[];
}

export const BagItemModel = new BagItem().getModelForClass(BagItem);
const UserModel = new User().getModelForClass(User);

export default UserModel;

当我尝试填充Item时,该项为null。但是使用与常规mongoose模型相同的数据库,我能够填充BagItem中的Item字段。

app.ts

UserModel.findById(req.user._id).then((user: any) => {
  return user.populate("Bag.Item").execPopulate();
}).then((bagPopulatedUser: User) => {
  console.log("The bag", bagPopulatedUser.Cart);
}).catch((err: MongoError) => {
  console.log(err);
});
typescript mongoose
1个回答
0
投票

结果我需要指定模型并且它有效。

UserModel.findById(req.user._id).then((user: any) => {
  return user.populate({
    path: "Bag.Item",
    model: "Item"
    }).execPopulate();
}).then((bagPopulatedUser: User) => {
  console.log("The bag", bagPopulatedUser.Cart);
}).catch((err: MongoError) => {
  console.log(err);
});
© www.soinside.com 2019 - 2024. All rights reserved.