Node.js 在视图中生成数组并将其传递给控制器
这有点奇怪,但我想不出更好的办法来完成它 首先,这是我的代码: 首先要获取视图的路由器Node.js 在视图中生成数组并将其传递给控制器,node.js,express,ejs,Node.js,Express,Ejs,这有点奇怪,但我想不出更好的办法来完成它 首先,这是我的代码: 首先要获取视图的路由器 router.get('/', function(req, res, next) { Account.findOne( { _id: req.user._id, }, function(err, acc) { if (err) { console.log(err); } // console.log(acc.websi
router.get('/', function(req, res, next) {
Account.findOne(
{
_id: req.user._id,
},
function(err, acc) {
if (err) {
console.log(err);
}
// console.log(acc.websites);
res.render('reports/index', {
title: 'Reports!',
websites: acc.websites,
user: req.user,
});
}
);
});
观点:
<% include ./../partials/header.ejs %>
<h1 class="text-center">This is your report page</h1>
<form method="post">
<% for(let i=0; i<websites.length; i++){ let website = websites[i]; %>
<fieldset>
<label for="website<%=i%>" class="col-sm-2">Website <%=i+1%></label>
<input name="website<%=i%>" id="website<%=i%>" value="<%=website%>" type="text" />
</fieldset>
<% } %>
<a href="/report/<%= %>" class="btn btn-primary col-sm-offset-2">Generate report</a>
</form>
<% include ./../partials/footer.ejs %>
工作原理:控制器找到该帐户,从其中获取一个数组,并将其发送到视图。视图将其打印出来,并允许对值进行一些更改
现在是问题的开始。我需要将新值收集到一个数组中,并将其发送到下一个路由器,然后路由器将使用它们调用一组API并打印出数据。如何收集阵列并将其传递给控制器?另外,我应该使用GET还是POST?和您的逻辑一起使用,
name
属性将具有以下形式:name=website[0…n]
。考虑到这一点,我们可以筛选出密钥,将所有网站[n]
收集到您所寻找的数组中:
const示例={
网站0:“示例”,
网站1:'示例',
网站2:'示例',
网站3:'示例',
应该被忽略:“忽略我”,
忽略:“应该忽略”
}
const websites=Object.keys(示例).filter(key=>key.startsWith('website'))
console.log(网站)
该按钮不应为锚定按钮,除非您希望单击导致页面重定向。我需要将其发送并重定向到其他视图。我不知道怎么寄,等等,我怎么寄?我是用一个锚还是一个帖子发送它?你像以前一样用视图发送它:res.render('my-view',{websites})
我很难理解。网站的视图将发生变化。从这个角度来看,我需要将它们发送到另一个控制器。我将如何在代码中表示它?只是正常发布,然后在控制器中过滤掉?
router.get('/reports', function(req, res, next) {
if (req.user.isPremium == false) {
// Free user - Single report
var builtWithCall = `https://api.builtwith.com/free1/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=${website}`;
let website = req.body.website0;
console.log(website);
}
});