首页 > 解决方案 > 在 ejs 页面上显示 MongoDB 查询结果

问题描述

我有一个路由器,它根据来自 MongoDB 的唯一 Object_id 返回特定用户的信息。这工作正常,我得到了正确的结果,但它们作为 JSON 对象在“空白”页面上返回。我想简单地获取结果并将它们呈现在我的 ejs 页面上。这是我的路线:

//Here are my router.js:

router.get('/user/get:id', function (req, res) {
    MongoClient.connect(DBUri,{useUnifiedTopology: true }, function (err, db) {
        let dbo = db.db(DBName);
        const query = {_id: objectId(req.params.id)}
        dbo.collection("Users").find(query).toArray(function(err, resultTasks) {
            if (err) throw err;
            res.send(resultTasks)
            db.close();
        });
    });
});


//Here are my file.ejs: 

<div class="card" v-for="post in filteredList">
     <a v-bind:href="'/user/get' + post.id">{{ post.name }}</a>
</div>

我还是新手,所以我知道这是基本的。我想我必须将 res.send 更改为其他内容,但现在确定如何。

标签: node.jsmongodbexpressejs

解决方案


您需要resultTasks在您的 ejs 模板中循环,例如:

<% resultTasks.forEach((post) => { %> 
  <div class="card" v-for="post in filteredList">
     <a v-bind:href="/user/get/<%= post.id %>"><%= post.name %></a>
  </div>
<%}); %>

此外,您可能需要更改send端点

dbo.collection("Users").find(query).toArray(function(err, resultTasks) {
    if (err) throw err;
    db.close();
    res.render('<path of your ejs file>', {
        resultTasks: resultTasks, // pass data from the server to the view
    });
});

推荐阅读