Node.js 类型化MongoDB填充

Node.js 类型化MongoDB填充,node.js,mongodb,nestjs,typeorm,Node.js,Mongodb,Nestjs,Typeorm,我目前正在使用NestJS,并将MongoDB与TypeORM一起使用,但我在Mongoose中找不到类似的.populate()方法,有没有办法使用TypeORM或我应该坚持使用Mongoose 例如,下面是我用Express+Mongoose创建的一条路线,我想用NestJS+TypeORM重新创建它: route.get('/:slug',异步(req,res)=>{ const collection=await collection.findOne({slug:req.params.sl

我目前正在使用NestJS,并将MongoDB与TypeORM一起使用,但我在Mongoose中找不到类似的
.populate()
方法,有没有办法使用TypeORM或我应该坚持使用Mongoose

例如,下面是我用Express+Mongoose创建的一条路线,我想用NestJS+TypeORM重新创建它:

route.get('/:slug',异步(req,res)=>{
const collection=await collection.findOne({slug:req.params.slug}).populate('products');
res.json(集合);
});

TypeORM
中有一种称为
关系的东西,您可以使用它来填充来自其他(相关)集合的文档

以下是TypeORM文档中的一个示例:

createConnection(/*...*/).then(async connection => {
 
    /*...*/
    let photoRepository = connection.getRepository(Photo);
    let photos = await photoRepository.find({ relations: ["metadata"] });
 
}).catch(error => console.log(error));
你可以在这里阅读更多关于它的信息

根据您在TypeORM中设计集合/架构的方式,您的查询可能如下所示,我还没有尝试过该查询,但您可以使其工作如下:

Collection.find({slug: req.params.slug}, {relations : ['products']});
注意,还有一些函数,如
.innerJoin和select
.leftJoin和select
,可以与
QueryBuilder(.createQueryBuilder)
一起使用,并从其他集合中填充文档,就像
mongoose.populate()


我建议您阅读TypeORM,这里也给出了许多示例,它将帮助您构建所需的查询。

添加
关系
参数似乎不起作用。显然,
QueryBuilder
方法不适用于MongoDB。我决定切换回mongoose,因为NestJS也非常支持它。对于
关系
参数,您也需要更新您的typeORM模式,并在那里定义关系(如一对一或多对一),那么只有它才能工作