Javascript Express/MongoDB/EJS-Can';不可读取对象

Javascript Express/MongoDB/EJS-Can';不可读取对象,javascript,node.js,mongodb,express,ejs,Javascript,Node.js,Mongodb,Express,Ejs,因此,我的Mongo数据库中有一些数据,我通过express.find(),并将其发送到我的EJS视图。很简单。但问题是当我试图用 获取并发送到EJS的Express代码: app.get('/wallpaps/:id',((请求,回复)=>{ const urlID=req.params.id; find({},函数(err,result){ 如果(错误){ 控制台日志(err); }否则{ var fres=result.filter(d=>d._id==urlID); res.render

因此,我的Mongo数据库中有一些数据,我通过express
.find()
,并将其发送到我的EJS视图。很简单。但问题是当我试图用

获取并发送到EJS的Express代码:

app.get('/wallpaps/:id',((请求,回复)=>{
const urlID=req.params.id;
find({},函数(err,result){
如果(错误){
控制台日志(err);
}否则{
var fres=result.filter(d=>d._id==urlID);
res.render('wallper-page',{fres});
}
});
})
)
和EJS:

%>
现在最大的困惑是:当我用
fres.\u id
替换
fres.description
时,它工作得非常好。但就是这样,它不想打印任何其他键值。我已经到处找了差不多一天了。但没有任何帮助。这让我很恼火

PS:
console.log(fres.description)
未定义的
console.log(fres.id)
工作正常

为什么??我该如何解决这个问题?
如果您需要任何其他代码,请告诉我。

数组。filter
返回数组。所以,
var fres=result.filter(d=>d._id==urlID)
变量
fres
是一个包含对象的数组

如果您只需要EJS模板中的对象,那么只需要传递它。
res.render('wallpaper-page',{fres:fres[0]})


现在,您可以直接访问
说明
键。但是我不明白
fres.\u id
是如何工作的,它也应该是
未定义的

除了filter方法返回数组的问题之外,我认为您在从Mongoose响应访问数据时还有另一个问题


此处讨论此问题:。您可以使用测试代码查看我的答案,以演示从Mongoose响应中访问数据的一些方法。

如果必须按id搜索,为什么不直接使用
Thing.findById(req.params.id)
。您还可以告诉我
console.log(fres)
give是什么吗?findbyid仍然会给我对象。console.log(fres)也给了我这个对象。
{id:6069820f402d01120cda8cff,imageName:'Dining Plate',imagePath:'./public/assets/img/6.jpg',description:'Wallpers',请查看我的答案,如果有帮助,请告诉我@对不起!我犯了一个愚蠢的错误,应该是
{fres:fres[0]}
@lolman试试这个。我创建了另一个变量,其值为
fres[0]
,并将其传递给视图。我仍然未定义和。\u id works edit:ok Edit2:问题仍然存在:(这就是问题所在,
%%>
你要关闭它两次。是的,我在前面看到了,修复了,你到底在哪里记录
fres
?在
filter
方法之后记录它。是的,这正是我自己发现并使用的。使用.findOne解决了它。我正要在这里发布它,发现了这个问题。