nodejs服务发送回json。如何在ejs / html

时间:2018-05-26 10:26:23

标签: node.js express ejs

我的nodejs应用程序正在使用express和post post方法。

app.post("/orderdeliver",function(req,res){
var cellNumber=req.body.mobilenumber;
User.findOne({mobilenumber:req.body.user.mobilenumber}).populate("clothes").exec(function(err,foundUser){
    if(err || foundUser.length<=0){
        console.log(err);
    }else{
        //res.render("orderhistory",{user: foundUser})
        res.send(foundUser);
    }
});

});

这里我想以json格式发回结果。这是由res.send()到调用的ejs页面完成的。现在我想在json中填充找到结果的同一页面。我必须只返回json格式。如何修改ejs页面,以便返回返回的json,旧的html元素将保留在原位。我知道res.render()可以使用,但这将失去发送回json的目的。

1 个答案:

答案 0 :(得分:0)

每当使用EJS时请记住以下两点:

- <%= someVariable %>
- <% someCode %>

解决方案:

res.send(foundUser)替换为res.render(page,foundUser),这样您就可以将页面作为要渲染的ejs和foundUser作为视图的参数。

你的功能也错了你应该使用它:

if(error) {
   return res.render(errorPage,{ error: error.message || error, data: false })
} else {
   return res.render(page,{ error: false, data: foundUser })
}

使用EJS文件上的值的示例:

<% if(foundUser.name) { %>
<h1><%= foundUser.name %></h1>
<% } %>