类似的数组表现不同

时间:2018-05-08 02:06:39

标签: arrays node.js mongodb mongoose

我正在用mongoose和Express编写应用程序,但在使用mongoose之前我使用的是mongodb的标准MongoClient。这给了我一个数组,我可以使用它来渲染我的树枝视图。但是,在进行切换后,Mongoose的数组不能像我预期的那样工作,例如我无法正确选择数组的键值,就像在这个代码示例中一样。

用猫鼬:

router.get('/:page', function (req, res, next) {
    Page.find({'title': req.params.page.toLowerCase()}, function (err, page) {
        if(!Array.length) {
            next(createError(404));
            return;
        }
        res.send(page[0].title);
    });

回应是:没有,空白。 出于某种原因,如果我执行page[0]page,它会将数组返回给我。

没有猫鼬:

const MongoClient = require('mongodb').MongoClient;
    MongoClient.connect('mongodb://localhost/ezcm', function (err, db) {
        if (err) throw err;
        let dbo = db.db("ezcm");
        let query = {title: req.params.page.toLowerCase()};
        dbo.collection("pages").find(query).toArray(function (err, result) {
            if (!Array.isArray(result) || !result.length) {
                next(createError(404));
                return
            }
            db.close();
        });
    });

(忽略不相关代码的额外位) 回复:我正在寻找的内容,例如About me,如果是localhost:3000/about

好像它们都是数组,但不同类型的数组?作为初学者,我无法区分并与之合作。救救我!

提前致谢。

1 个答案:

答案 0 :(得分:1)

对结果使用JSON.parse(array),mongoose喜欢以不同于标准JSON的方式处理对象和数组。