我正在使用库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);
});
答案 0 :(得分: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);
});
答案 1 :(得分:0)
如果您需要对多个文档执行此操作,那么它是-
y = RNN(cells, return_state=True)(x)
尽管对我来说,我发现const users = await UserModel.find();
await UserModel.populate(users, {path: 'Bag.Item', model: 'Item'});
//now users[i].item is an Item
不能工作,但是path: 'Bag.Item'
可以工作。也许去年有所改变。