从一个集合查询ID,并从另一个集合查询ID的值-Mongoose

时间:2019-12-30 05:53:42

标签: javascript node.js mongodb typescript mongoose

我试图以相同的方法从一个集合中查询id,并从另一个集合中查询该ID的值。我尝试了一种老式的方法,该方法花费大量时间来循环,检查条件并发送回响应。有什么有效的方法可以做到这一点。

我的收藏集

a.model.ts

    [{
      "_id": "5e0987d7f9b2473264f64565",
      "empId": "5de60be5707fba2750c0770c",
      "role": :emp,
      "createdAt": "2019-12-30T05:15:03.595Z",
      "updatedAt": "2019-12-30T05:15:03.595Z",
      "__v": 0
    },
    {
      "_id": "5e0987d7f9b2473264f64565",
      "role": :emp,
      "empId": "5de60be5707fba2750c2384c",
      "createdAt": "2019-12-30T05:15:03.595Z",
      "updatedAt": "2019-12-30T05:15:03.595Z",
      "__v": 0
    }]

b.model.ts

[{
  "_id": "5de60be5707fba2750c0770c",
  "name": "abc",
  "age": "25",
  "updatedAt": "2019-12-30T05:15:03.595Z",
  "__v": 0
},
{
  "_id": "5de60be5707fba2750c0770c",
  "name": "xyz",
  "age": "29",
  "updatedAt": "2019-12-30T05:15:03.595Z",
  "__v": 0
}]

get.ts

a.find({
    role: "emp"
}, (err, data) => {
    if (err) {
        res.send(err)
    } else {
        data.forEach(element => {
            b.find({
                _id: new mongoose.Types.ObjectId(element.empId)
            }, (err, result) => {
                if (err) {
                    console.log(err)
                } else {
                    res.send(result);
                }


            })
        });
    }
})

我从role:emp获得了与a匹配的所有数据,并循环获取empId,以便我可以循环b并发送详细信息作为响应。有什么有效的方法可以做到这一点?

0 个答案:

没有答案