通过检查另一个集合中的条件从集合中获取数据

时间:2016-03-17 04:05:29

标签: angularjs meteor angular-meteor

我正在研究角度流星。 在我的数据库中有两个集合,即订阅和学校。 订阅:

[
{
    "_id" : "9qAcc86yhG7hSxejL",

    "school" : {
        "_id" : "uz7rMGXJwn566GhBg"
    },

 "wrk_status":"completed"


},
{
    "_id" : "9qAcc86yhG7hSxejL",

    "school" : {
        "_id" : "uz7oMGXJwn566GhBg"
    },

 "wrk_status":"pending"


},
{
    "_id" : "9qAcc86yhG7hSxejL",

    "school" : {
        "_id" : "uz7pMGXJwn566GhBg"
    },

 "wrk_status":"completed"


}]

学校:

[
{
    "_id" : "uz7rMGXJwn566GhBg",

    "name" : "The Oxford School",
    "address" : "Trivandrum",

    "status" : "new",

    },
{
    "_id" : "uz7oMGXJwn566GhBg",

    "name" : "The  School",
    "address" : "Trivandrum",

    "status" : "new",

    },
{
    "_id" : "uz7pMGXJwn566GhBg",

    "name" : "The new School",
    "address" : "Trivandrum",

    "status" : "new",

    }]

所以我想从学校集合中获取学校的名称,地址和状态,其中订阅集合中的wrk_status已完成。 所以一开始我想订阅订阅收集并获得school._id,其中wrk_status已经完成,然后订阅学校收藏,列出学校的详细信息._id

2 个答案:

答案 0 :(得分:1)

您可以使用reywood:publish-composite软件包。

提供一种灵活的方法,使用响应式连接从各种集合中发布一组相关文档。这使得一次发布整个文档树变得容易。已发布的集合是被动的,并且会在添加/更改/删除时更新。

这是link

答案 1 :(得分:0)

制作学校词典

var sch_dict = {};
shools.forEach(function(sch) {
    sch_dict[sch._id] = sch
});

var result = []
subscriptions.forEach(function(sub) {
    if (sub.wrk_status = 'completed') {
       result.push(sch_id[sub.school._id]);
    }
})