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);
  }
});