2016-08-10 11 views
2

帆のJS(MongoDBの)中で人口コレクションのCountたい..私が使用 コマンドは次のとおりです。は、私は2つのモデルのカテゴリと在庫および関連を持っている

Category.find(query).populate('inventories',{select: ['id']}); 

それは私に次のような結果になります

"categories": [ 
    { 
    "inventories": [ 
     { 
     "id": "4369b6bd-de15-4201-97b5-43a10e3ccb5f" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "B", 
    "createdAt": "2016-07-19T17:41:25.184Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:11:49.819Z", 
    "id": "017af659-09ec-4f83-b5fb-b4d562912745" 
    }, 
    { 
    "inventories": [ 
     { 
     "id": "bffa55ac-724d-454d-b02f-bb3002b6ee99" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "A", 
    "createdAt": "2016-07-19T17:40:47.009Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:11:49.813Z", 
    "id": "efb5a472-417a-4365-89d2-a0ba46f6a9b0" 
    }, 
    { 
    "inventories": [ 
     { 
     "id": "5c19106c-36c8-47ae-b596-97234867054e" 
     }, 
     { 
     "id": "5c191dfc-36c8-fa7ae-ber96-9df234867054e" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "C", 
    "createdAt": "2016-07-19T17:42:06.661Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:13:50.305Z", 
    "id": "f75f59f8-6d5b-415d-9019-47c0bed5cb6a" 
    }, 
    { 
    "inventories": [ 
     { 
     "id": "10c7c06e-cfd4-45ec-8bd7-bf77e349fc3b" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "D", 
    "createdAt": "2016-07-19T17:42:50.511Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:13:50.307Z", 
    "id": "8ad0fee5-9efe-49dc-ae24-761860874855" 
    } 
] 

しかし、私は何をしたいの人口データは、ちょうど例えばのために関連付けられたレコード の数を返します:

"inventories": [ 
     2 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "C", 
    "createdAt": "2016-07-19T17:42:06.661Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:13:50.305Z", 
    "id": "f75f59f8-6d5b-415d-9019-47c0bed5cb6a" 
    }, 

いくつかのWebサイトには、populateCount()という関数があります。 しかし、populateCountは関数ではありません... 助けてください

+0

セイルには 'populateCount()'関数がありません。しかし、カテゴリごとに 'category.inventories = category.inventories.length'を割り当てることもできます。 – Fissio

答えて

3

セイルはこのような機能を提供しませんが、この問題は非常に簡単に解決されます。インベントリ配列を数え、その長さを新しいプロパティに保存するだけです。

Category.find({ id : [1, 2] }) 
    .populate('inventories') 
    .then(function (categories) { 

    categories.forEach(function (category) { 
     category.inventoriesLength = category.inventories.length; 
    }); 

    }); 
関連する問題