Express/MongoDB/EJS - 无法读取对象
Express/MongoDB/EJS - Can't read object
所以我的 Mongo 数据库中有一些数据,我.find()
通过快递将其发送到我的 EJS 视图。很简单。但问题是当我尝试使用 <pre><%=%></pre>
读取它时,我得到了未定义。这是完整的代码:
包含对象的数据数组 MongoDB:
[{
_id: 6069820f402d01120cda8cff,
imageName: 'Dining Plate',
imagePath: './public/assets/img/6.jpg',
description: 'Wallpapers',
__v: 0
}]
在我得到它的地方表达代码并将它发送给 EJS:
app.get('/wallpapers/:id', ((req, res) => {
const urlID = req.params.id;
Thing.find({}, function (err, result) {
if (err) {
console.log(err);
} else {
var fres = result.filter(d => d._id == urlID);
res.render('wallpaper-page',{fres});
}
});
})
)
和 EJS:
<pre><%= fres.description%> %> </pre>
现在大混乱:当我用 fres._id
替换 fres.description
时,它工作得很好。但仅此而已,它不想打印任何其他键值。我已经到处搜索了将近一天。但没有任何帮助。这让我很烦。
PS: console.log(fres.description)
是 undefined
并且 console.log(fres._id)
工作正常。
为什么?我该如何解决?
如果您需要任何其他代码,请告诉我。
Array.filter
returns 一个数组。因此,var fres = result.filter(d => d._id == urlID);
变量 fres
是一个包含对象的数组。
如果您只需要 EJS 模板中的对象,则只需传递该对象即可。
res.render('wallpaper-page',{fres: fres[0]});
现在您可以直接访问 description
键。但是不明白fres._id
是怎么算的,应该也是undefined
.
除了过滤器方法 returns 数组的问题,我认为您在从 Mongoose 响应访问数据时还有另一个问题。
此处讨论此问题:。您可以使用测试代码查看我的答案,以演示一些从 Mongoose 响应访问数据的方法。
所以我的 Mongo 数据库中有一些数据,我.find()
通过快递将其发送到我的 EJS 视图。很简单。但问题是当我尝试使用 <pre><%=%></pre>
读取它时,我得到了未定义。这是完整的代码:
包含对象的数据数组 MongoDB:
[{
_id: 6069820f402d01120cda8cff,
imageName: 'Dining Plate',
imagePath: './public/assets/img/6.jpg',
description: 'Wallpapers',
__v: 0
}]
在我得到它的地方表达代码并将它发送给 EJS:
app.get('/wallpapers/:id', ((req, res) => {
const urlID = req.params.id;
Thing.find({}, function (err, result) {
if (err) {
console.log(err);
} else {
var fres = result.filter(d => d._id == urlID);
res.render('wallpaper-page',{fres});
}
});
})
)
和 EJS:
<pre><%= fres.description%> %> </pre>
现在大混乱:当我用 fres._id
替换 fres.description
时,它工作得很好。但仅此而已,它不想打印任何其他键值。我已经到处搜索了将近一天。但没有任何帮助。这让我很烦。
PS: console.log(fres.description)
是 undefined
并且 console.log(fres._id)
工作正常。
为什么?我该如何解决? 如果您需要任何其他代码,请告诉我。
Array.filter
returns 一个数组。因此,var fres = result.filter(d => d._id == urlID);
变量 fres
是一个包含对象的数组。
如果您只需要 EJS 模板中的对象,则只需传递该对象即可。
res.render('wallpaper-page',{fres: fres[0]});
现在您可以直接访问 description
键。但是不明白fres._id
是怎么算的,应该也是undefined
.
除了过滤器方法 returns 数组的问题,我认为您在从 Mongoose 响应访问数据时还有另一个问题。
此处讨论此问题: