node js .Cannot将mongodb查询结果传递给jade视图

时间:2013-04-15 21:35:52

标签: node.js mongodb express

我有这段代码

exports.index = function (req, res) {
res.render('product/index.jade', {
    products: db.products.find().toArray(function (err, prods) {
        if (!err)
            return prods;
        return [];
    })
});

};

我在这里要做的是将查询结果传递给jade视图,该视图需要一个名为“products”的参数。 我已经尝试了很多组合,但它们都不起作用(现在我得到“无法读取自己的长度......”)。 我知道这肯定是一个新手的错误,但我无法弄明白,任何帮助都会被贬低!

PS:我正在使用express和mongodb。是的,产品系列确实包含产品。

1 个答案:

答案 0 :(得分:1)

toArray实际上并不返回值。相反,一旦查找完成,就会将产品作为参数调用回调函数。这是由于节点的异步I / O性质。

您的代码应该看起来像这样

exports.index = function (req, res) {
    db.products.find().toArray(function (err, prods) {
        if (!err)
            res.render('product/index.jade', {products: prods});
        else
            res.render('product/index.jade', {products: []});
    });
});