【发布时间】:2021-06-02 09:22:48
【问题描述】:
我正在尝试显示 mongodb 在 EJS 中搜索的搜索文档。但到目前为止,我只设法将整个文档一次显示为 json 格式。但现在我只想显示其中的一部分而不是整个文档。但是由于某种原因,为什么我尝试只显示其中的一部分,当您在浏览器中预览它时,该字段将保持空白。在这种情况下,该字段是:“其他用户名”。为此,我正在使用:nodejs、mongodb、express 和 EJS。
Index.js:
router.post('/searchplayer', ensureAuthenticated, function(req, res){
const {text} = req.body;
var input = text
User.findOne({charactername: text})
.then(user => {
if(user) {
const { MongoClient } = require("mongodb");
console.log('player found')
MongoClient.connect(url, function(error, db) {
if (error) throw error;
var dbo = db.db("Databasetest");
var query = { charactername: text };
dbo.collection("users").find(query).toArray(function(error, query, result) {
if (error) throw error;
var myJSON = JSON.stringify(query, null , 12)
console.log(myJSON);
res.render('playersearch', {
user: req.user,
energy: myJSON.energy
})
console.log(energy)
db.close();
})
});
} else {
console.log("Player does not exist")
res.redirect('main')
}
})
})
这里发生的情况是,有人通过输入名称进行搜索,一旦在 MongoDB 中的“用户”集合中找到它,它会将您重定向到另一个页面。它应该在哪里呈现属于所搜索名称的信息。但问题是我无法在 EJS 中显示单个字段,所以为了澄清 myJSON 是 MongoDB 找到的整个文档,它是字符串化的。
在这种情况下,我尝试显示能量字段,因为它存在于该文档中,但这只会在“其他用户名”字段中返回一个空字段。我还尝试在该字段中写入例如:myJSON.energy,但是当我在浏览器中预览它时,由于某种原因,这也会返回一个空字段。
playersearch.ejs:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/static/CSS/styleofplayersearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="">
</head>
<body>
<title>test</title>
<img id= "backgroundimage" draggable="false" src="/static/images/post_apocalyptic_landscape.jpg">
<div id= "blackbackground" draggable="false"></div>
<h4 id="otherusername"><%=energy%></h4>
<script>
</script>
<a id="logouttext" href="/users/logout">Logout</a>
</body>
</html>
我的问题是如何只渲染 Mongodb 找到的文档的一部分而不是整个文档?
【问题讨论】:
-
尝试使用 JSON.parse 而不是 JSON.stringfy。
标签: javascript node.js mongodb ejs