使用typegoose将项目添加到Ref数组

时间:2018-08-13 14:47:07

标签: mongoose

我有2个类扩展了TypegooseItemPlayer

Player类中,我得到了Ref<Item>[]的数组

    @arrayProp({itemsRef: Item})
    items?: Ref<Item>[];

在我的PlayersService中,我使用这种方法来推送Item

    async pushItem( itemPlayerDto: {playerId: string, item: Item}) : Promise<Player> {
        let player = await this.findById(itemPlayerDto.playerId);
        player.items.push(itemPlayerDto.item);
        return await new this.playerModel(player).save();
}

但是当我检索Players时,他们的items并没有被发送,只有Array of ObjectId

    async findAll(): Promise<Player[]> | null {
        return await this.playerModel.find().exec();
} 

PS:我正在将Typegoose与nestjs和netsjs-typegoose一起使用

1 个答案:

答案 0 :(得分:2)

好的,这就是从typegoose类填充Ref项目的方法(使用:populate方法):

async findByName(playerName: string): Promise<Player> | null {
    let player = await this.playerModel.findOne({'displayName': playerName}).exec();
    let playerWithItems = await player.populate({
        path: 'items',
        model: 'Item'
    }).execPopulate();
    return playerWithItems;
}