使用网络应用程序。我有一个路由/视图,它根据从API调用到URL的数据填充引导卡。使用forEach循环可以很好地填充该数据,而我使用EJS可以将卡片等元素(如段落)设置为来自API调用的适当数据。但是,我的卡上有一个元素不包含在API调用中,但是我的数据在本地mongodb中(在此应用程序中使用mongoose)。我的技能水平是初学者,所以我不太确定如何进行下一部分。我已彻底寻找答案。我想获得卡上的
元素,以使用ID(根据API调用是动态的)从数据库中显示相应字段,以从文档中识别要使用的正确数据。该应用程序将显示每个州的收费公路信息。 API调用根据用户选择的州来返回该州的所有收费公路。引导卡会从API调用中填充一些有关收费公路的基本信息。但是我有一个不包含在数据库中的收费说明。引导卡将动态获取数据库也具有的通行费。我只需要弄清楚如何根据卡上的相应收费从数据库中获取locdesc。我希望这是有道理的。下面的代码。...
我能够执行find()并从我的路线中的数据库中获取数据,所以我感觉自己快到了。
------------------- ROUTE --------------------------- --------------------------
app.get("/results", isLoggedIn, function(req, res){
var state = req.query.state
Locationdesc.find({ state: state }, function(err, locdesc){
if(err){
console.log(err)
} else {
request("https://apiurlgoeshere" + state + "apiurlgoeshere", function(error, response, body){
if(!error && response.statusCode == 200){
var parsedData = JSON.parse(body)
res.render("results", {data:parsedData, locdesc:locdesc})
}
})
}
})
})
----------------- END ROUTE ----------------------------
---------------- VIEW ------------------------------
<% include ./partials/header %>
<div class="container">
<header class="jumbotron mb-5">
<div class="container text-center">
<h1>Select a Toll to View Additional Information and Do Something with Notifications and Alerts</h1>
<p>
<a class="btn btn-primary btn-large" href="/search">Back To Search</a>
</p>
</div>
</header>
<div class="album py-">
<div class="container">
<div class="row">
<% data["features"].forEach(function(toll){ %>
<div class="col-md-4 col-lg-3 col-sm-6 card-group">
<div class="card shadow mb-4">
<div class="card-body d-flex flex-column">
<p class="card-text">Toll ID - <%= toll["attributes"]["tollid"] %></p>
<p class="card-text">Cost- <%= toll["attributes"]["cost"] %></p>
<p class="card-text">Location - <%= toll["attributes"]["location"] %></p>
<p class="card-text">Location Description - ??????????????????????? </p>
<p class="card-text hide">State - <%= gauge["attributes"]["state"] %></p>
</div>
</div>
</div>
<% }) %>
</div>
</div>
</div>
-------------------------------- END VIEW ----------------- ---------------------
-------------------------------- DB SCHEMA ------------- --------
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var locSchema = new mongoose.Schema ({
locdesc: String,
tollid: String,
state: String
})
var Locationdesc = mongoose.model("Locationdesc", locSchema)
module.exports = mongoose.model('Locationdesc', locSchema);
答案 0 :(得分:0)
您有权访问locdesc
,这是怎么回事:
<div>
<% data["features"].forEach(function(toll){ %>
<p class="card-text">Toll ID - <%= toll["attributes"]["tollid"] %></p>
<p class="card-text">Cost- <%= toll["attributes"]["cost"] %></p>
<p class="card-text">Location - <%= toll["attributes"]["location"] %></p>
<% if(locdesc.filter(location => location.tollid == toll["attributes"]["tollid"])[0]['locdesc']) { %>
<p class="card-text">Location Description <%= locdesc.filter(location => location.tollid == toll.tollid)[0]['locdesc'] %>
<% } %>
<p class="card-text hide">State <%= toll.state %></p>
<% }) %>
</div>
使用filter
可以解决问题。