【问题标题】:forEach is not a function omdb and api expressforEach 不是函数 omdb 和 api express
【发布时间】:2020-12-01 05:00:10
【问题描述】:
    app.get('/result',(req, res)=>{
    //request("http://www.omdbapi.com/?t=harry potter&apikey=thewdb",(error, 
   request("http://www.omdbapi.com/?t=harry potter&apikey=thewdb",(error, response,body)=>{
       if(!error && response.statusCode == 200){
           var data = JSON.parse(body)
            res.render("results", {data:data})
            //res.send(typeof parseData)
       }else{
            res.send(error)   
       }
   })
});

我的 results.ejs 页面

<% data.forEach(function(movie) {%>
    <li><%=movie.title%></li>
<%}) %>

我收到错误 forEach is not a function 我对 api 和 express 很陌生 谢谢

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow,您可以将您的代码添加为文本而不是图像吗? (请参阅here 的详细信息,了解为什么这是首选)。
  • 你确定data 是一个数组而不是其他东西(例如:一个对象?)
  • 我刚刚检查了那个 API,它没有返回一个数组
  • @NickParsons 我很抱歉对程序和 stackoverflow 很陌生,我会尝试编辑它
  • 这很简单:api 不返回数组 - 因此您不能对数据使用数组方法

标签: javascript api express


【解决方案1】:

端点:http://omdbapi.com/?t=harry%20potter&apikey=thewdb 不会返回 Javascript 将转换为 array of objectsJSON collection,但它会返回单个 object。 而且你不能使用Array.prototype.forEach 方法循环一个对象。

这是您发布的端点的结果

您的loop 永远不会在对象上工作

【讨论】:

  • 感谢您的回复,我尝试使用 var data = JSON.parse(body) 对其进行转换,如果使用我的结果页面上的数据,它会显示 [object] [object]
【解决方案2】:
<% data["Search"].forEach(function(movie){%> 
    <li><%= movie.Title %> </li>
<%}) %>

对于那些将遇到与我相同问题的人,此 api 需要 ["search"] 才能使其工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多