微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Express/MongoDB/EJS - 无法读取对象

如何解决Express/MongoDB/EJS - 无法读取对象

所以我的 Mongo 数据库中有一些数据,我.find()通过快递将其发送到我的 EJS 视图。很简单。但问题是当我尝试使用 <pre><%=%></pre> 阅读它时,我得到了未定义。这是整个代码
MongoDB 中包含对象的数据数组:

[{
  _id: 6069820f402d01120cda8cff,imageName: 'Dining Plate',imagePath: './public/assets/img/6.jpg',description: 'Wallpapers',__v: 0
}]

我在那里获取并发送给 EJS 的 Express Code:

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.description 替换 fres._id 时,它工作得很好。但就是这样,它不想打印任何其他键值。我已经搜索了将近一天。但没有任何帮助。这让我很烦。

PS: console.log(fres.description)undefinedconsole.log(fres._id) 工作正常。

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

解决方法

Array.filter 返回一个数组。因此,var fres = result.filter(d => d._id == urlID); 变量 fres 是一个数组,其中包含一个对象。

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

现在您可以直接访问 description 键。但我不明白 fres._id 是如何工作的,它也应该是 undefined

,

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

这里讨论了这个问题:Mongoose return data inside _doc object。您可以使用测试代码查看我的回答,以演示一些从 Mongoose 响应中访问数据的方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?