Arrays 行为不同的相似数组

Arrays 行为不同的相似数组,arrays,node.js,mongodb,mongoose,Arrays,Node.js,Mongodb,Mongoose,我正在用mongoose和Express编写一个应用程序,但在使用mongoose之前,我使用的是mongodb的标准MongoClient。这给了我一个数组,我可以用它来渲染我的细枝视图。但是,在进行切换之后,Mongoose的数组并没有像我预期的那样工作,因为我无法正确地选择数组的键的值,如下面的代码示例中所示 猫鼬: router.get('/:page', function (req, res, next) { Page.find({'title': req.params.pag

我正在用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);
    });
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();
        });
    });
回答是:没有,空白。 出于某种原因,如果我执行
page[0]
或仅执行
page
,它将返回它应该返回的数组

没有猫鼬:

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);
    });
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();
        });
    });
(忽略不相关代码的额外位) 回答:我在寻找什么,比如
关于我
如果是
localhost:3000/关于

看起来它们都是数组,但是不同类型的数组?作为一个初学者,我不能很好地分辨和使用它们。救救我


提前感谢。

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

为什么要使用
if(!array.length)
而不是
if(!page | | page.length)
<代码>数组。长度与
页面
毫无关系。@jfriend00哦,我已经更改了,但正如预期的那样,当您使用
控制台时,什么类型的对象是
页面
。log
它?@Houseman object没有任何影响Array@MucaP此数组中是否存在第0个索引?它是否有title属性?否,失败:SyntaxError:Object.parse(本机)位置2处JSON中的意外标记