我正在使用库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);
});
结果我需要指定模型并且它有效。
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);
});