【问题标题】:Similar arrays behaving different类似的数组表现不同
【发布时间】:2018-05-08 23:27:42
【问题描述】:

我正在使用 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

似乎它们都是数组,但是不同类型的数组?作为初学者,我无法完全区分和使用它们。帮帮我!

提前致谢。

【问题讨论】:

  • 你为什么用if(!Array.length)而不是if (!page || !page.length)Array.lengthpage 一点关系都没有。
  • @jfriend00 哦,我已经改变了,但正如预期的那样,我的问题没有影响
  • 当你console.log它时page是什么类型的对象?
  • @Houseman 对象数组
  • @MucaP 此数组中是否存在第零个索引?它有title属性吗?

标签: arrays node.js mongodb mongoose


【解决方案1】:

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

【讨论】:

  • 不,失败:SyntaxError:JSON 中位于 Object.parse (native) 位置 2 的意外标记 _
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 2014-12-01
  • 2010-09-26
  • 2010-10-26
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多