如何在EJS中处理OMDb API返回的N/A海报图片?
解决OMDb API返回"N/A"海报时替换为自定义地址的方案
方案一:在EJS模板中直接判断处理
无需改动后端逻辑,直接在渲染海报时通过EJS三元表达式做判断,快速替换异常地址:
修改index.ejs中的img标签代码:
<img src="<%= movie.Poster === 'N/A' ? '/images/default-poster.jpg' : movie.Poster %>" alt="movie's poster" width="300px" height="450px">
说明:
- 将
/images/default-poster.jpg替换为你实际的自定义海报路径,确保文件放在项目public文件夹下(已配置express.static("public"),静态资源会从这里读取) - 该方式适合快速修改,逻辑直接体现在模板中
方案二:在后端Node.js中预处理数据
若希望模板逻辑更简洁,或后续有多处复用海报数据的场景,可在后端统一处理异常地址:
修改index.js中POST请求的处理逻辑,在获取到API返回结果后添加数据预处理:
// 原获取结果代码 const searchResult = data.Search; // 新增海报地址替换逻辑 const first10movie = searchResult.map(movie => ({ ...movie, Poster: movie.Poster === 'N/A' ? '/images/default-poster.jpg' : movie.Poster })); movies=first10movie; res.redirect("/");
修改后,index.ejs中的img标签可保持原有写法不变,后端已完成所有异常地址的替换,模板无需额外判断。
注意事项:
- 自定义海报路径需确保正确,例如文件放在
public/images/default-poster.jpg时,路径写/images/default-poster.jpg即可 - 两种方案任选其一,根据你的代码结构和需求选择更合适的方式
内容的提问来源于stack exchange,提问作者Atearos
相关产品推荐
相关产品推荐

