【问题标题】:how to set if else condition in ejs如何在ejs中设置if else条件
【发布时间】:2021-09-03 21:57:09
【问题描述】:

我想设置 if else 条件,如果用户配置文件退出则执行

<img src="data:image/<%=user.profile.contentType%>;base64, <%=user.profile.data.toString('base64')%>" alt="">

打印以下内容

<img src="css/image/user.svg" alt="">

实际上是用户登录网站,因此注册后用户将更新图像后数据库中有任何图像,所以我将用户数据呈现在 EJS 文件中。
以下是我最近的尝试。

<% if (user.profile.length > 0) { %>
    <img src="css/image/user.svg" alt=""> <!-- random image -->
<% } else { %>
    <img src="data:image/<%=user.profile.contentType%>;base64,
    <%=user.profile.data.toString('base64')%>" alt="">   <!-- user profile , it will set when user update image -->
<% }  %>

但是这里是错误的:

TypeError: C:\Users\SBCS\Desktop\blog4u\blogs-4u\views\user.ejs:19
17|      <% } else { %>

18|       <img src="data:image/<%=user.profile.contentType%>;base64,

19|       <%=user.profile.data.toString('base64')%>" alt="">

20|      <% }  %>

 

无法读取未定义的属性“toString” 在 eval (编译时的 eval (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\ejs\lib\ejs.js:662:12), :34:43) 在用户处(C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\ejs\lib\ejs.js:692:17) 在 tryHandleCache (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\ejs\lib\ejs.js:272:36) 在 View.exports.renderFile [作为引擎] (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\ejs\lib\ejs.js:489:10) 在 View.render (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\express\lib\view.js:135:8) 在 tryRender (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\express\lib\application.js:640:10) 在 Function.render (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\express\lib\application.js:592:3) 在 ServerResponse.render (C:\Users\SBCS\Desktop\blog4u\blogs-4u\node_modules\express\lib\response.js:1012:7) 在 C:\Users\SBCS\Desktop\blog4u\blogs-4u\app.js:237:13 在 runMicrotasks () 在 processTicksAndRejections (internal/process/task_queues.js:93:5)

以下是我的用户架构:

const userSchema = new mongoose.Schema({
    name: String ,
    email:String,
    password:String,
    profile:{ data: Buffer, contentType: String }
});

我在这里渲染

app.get('/user', async (req,res) => {
    if (req.isAuthenticated()) {
        const user = req.user;
        const posts = await Post.find({ user: user._id });

        res.render("user",{ user, posts, message: req.flash('message') });
    } else {
        req.flash('message', "Log in here for user profile");
        res.redirect('/login');
    }
});

【问题讨论】:

  • 您能否向我们提供您用于呈现页面的代码,以便为您提供准确的响应?
  • 这里的代码是渲染 app.get('/user', async (req,res)=>{ if(req.isAuthenticated()){ const user = req.user; const posts = await Post.find({user:user._id}) res.render("user",{user: user ,posts:posts , message :req.flash('message' )}); }else{ req. flash('message', "登录此处获取用户配置文件") res.redirect('/login') } })
  • 请在您的问题中提供该代码。在评论中很难阅读。
  • 对不起,我加了先生

标签: javascript node.js mongodb ejs


【解决方案1】:

这是在 EJS 中使用 if-else 的方法

<% if(condition){ %>
    <h1>foo</h1>
<% } else{ %>  
    <h1>bar</h1>
<% } %>

您使用的是user 而不是userSchema,这可能是个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 2019-04-25
    • 1970-01-01
    • 2019-12-28
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多