我正在用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
。
好像它们都是数组,但不同类型的数组?作为初学者,我无法区分并与之合作。救救我!
提前致谢。
答案 0 :(得分:1)
对结果使用JSON.parse(array)
,mongoose喜欢以不同于标准JSON的方式处理对象和数组。