【发布时间】: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.length和page一点关系都没有。 -
@jfriend00 哦,我已经改变了,但正如预期的那样,我的问题没有影响
-
当你
console.log它时page是什么类型的对象? -
@Houseman 对象数组
-
@MucaP 此数组中是否存在第零个索引?它有title属性吗?
标签: arrays node.js mongodb mongoose