从Express.js中的两个Mongoose模型发送数据,以显示在视图列表数据中

时间:2015-05-22 09:02:18

标签: json node.js mongodb express mongoose

我有一个购物网站我希望能够在视图中显示两个模型名称“牛仔裤”和“衬衫” 我需要从两个模型传递数据,我知道如何从一个控制器中的两个模型访问数据,但我不知道如何从该控制器发送数据

控制器:

var mongoose = require('mongoose'),
errorHandler = require('./errors.server.controller'),
Shirt = mongoose.model('Shirt'),
Jeans = mongoose.model('Jeans');


exports.list = function(req, res) {

Jeans.find().sort('-created').populate('user', 'displayName').exec(function(err, jeans) {
        Ajean = jeans;
});
Shirt.find().sort('-created').populate('user', 'displayName').exec(function(err, shirts) {
        Ashirt = shirts;
});

Shirt.find().sort('-created').populate('user', 'displayName').exec(function(all) {

            // res.jsonp(Ashirt);
            // res.jsonp(Ajean);

});
};

查看:

    <div class="list-group">

    <table class="table table-striped table-bordered">
        <thead>
            <tr>
                <th>Name</th>
                <th>Color</th>
            </tr>
        </thead>
        <tbody>
            <tr data-ng-repeat="item in items">
                <td data-ng-bind="item.name"></td>
                <td data-ng-bind="item.color"></td>
            </tr>
        </tbody>
    </table>
</div>

我知道我不能使用“res.jsonp();”不止一次 。 当我使用“Ajean”时,它会给我“牛仔裤”的数据 当我使用“Ashirt”时,它会给我“衬衫”型号的数据 但我希望能够显示“衬衫”模型和“牛仔裤”模型的数据

  1. 我该怎么办? 我需要合并两个Json吗?
  2. 如何更改视图以查看该数据?
  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试嵌套查询,然后将生成的数组与Array.concat合并:

Jeans.find().sort('-created').populate('user', 'displayName').exec(function(err, jeans) {
    Shirt.find().sort('-created').populate('user', 'displayName').exec(function(err, shirts) {
        var all = shirts.concat(jeans);
        res.jsonp(all);
    });
});