在加载数据之前,数据值呈现为 'name'

Data value is rendering as 'name' prior to the data being loaded

见下图。

提交搜索后,数据应呈现在搜索栏下方,搜索栏正在通过 ejs 加载,如下所示:

<div class="data">
            <%= data %>
        </div>

前几天,点击搜索后正在加载此数据,但是,现在在加载我的本地主机时,立即出现 'name' 字样。

当我在网页上进入我的源代码时,它显示为

<div class="data">
            name
        </div>

所以这一定是这个问题的来源。 我怎样才能停止呈现单词 name,而只是在表单提交时加载数据?


编辑: 这是一些后端代码

app.get('/',(req,res)=>{
  res.render('index',{
      data: 'name'
  })
})

app.post('/', async(req, res) => {

  const whoissearch = new whoissearch()

  try {
      await whoissearch()

      const url = req.body

      let urlEncoded = decodeURIComponent(url.url);

      await whoissearch.init();
      const site = await whoissearch.open(urlEncoded)
      site.on('error', console.error) // catch the errors
      const results = await site.analyze()


      const data = JSON.stringify(results, null, 2)
      console.log(results.whois[0].name)

      await whoissearch.destroy()

      res.render('index', {
          data: data
      });

我已经追踪到错误来自这些行

app.get('/',(req,res)=>{
  res.render('index',{
      data: 'name'
  })
})

不得不重置服务器。它似乎已自行修复。

这是处理异步代码和 API 时的典型问题。你应该研究称为“条件渲染”的概念来处理这个问题。

我有一段时间没有使用 ejs,如果语法不正确,请见谅。

你能试试吗:

<div class="data">
        <%= data !== 'name' ? data : '' %>
</div>

您在这里看到的是您可以称之为“使用三元运算符进行动态渲染”的东西。