获取响应对象Nodejs Express

时间:2018-01-23 09:04:28

标签: node.js express ejs


我有一个运行nodejs和express的web应用程序。我使用ejs作为视图引擎。
这是我的ejs文件:

    <!DICTYPE html>
<html lang="en">

<head>
    <title>Nodejs Mongodb App</title>

    <style>
    </style>
</head>
<ul>
    <li><span>Title: </span> <div><%= movie.title %></div> </li>
    <li><span>From Year: </span> <div><%= movie.fromYear %></div> </li>
    <li><span>To Year: </span> <div><%= movie.toYear %></div> </li>
    <li><span>Genre: </span> <div><%= movie.genre %></div> </li>
    <li><span>Director: </span> <div><%= movie.genre %></div> </li>
    <li><span>Creator: </span> <div><%= movie.genre %></div> </li>
    <li><span>Number of Episodes: </span> <div><%= movie.genre %></div> </li>
    <li><span>Number of Seasons: </span> <div><%= movie.genre %></div> </li>
    <li><span>Poster URL: </span> <div><%= movie.genre %></div> </li>
    <li><span>Plot: </span> <div><%= movie.plot %></div> </li>


</ul>

<button><a href="/delete" style="text-decoration: none">Delete Record</a></button>

<body>

<script>
console.log(movie);
</script>
</body>
</html>

这是我的路线:

 app.post('/find', function (req, res, next) {
        var collection = db.collection('movies');
        collection.find({title: req.body.title}).toArray(function (err, result) {
            console.log(result[0]);
            res.render('movie.ejs', {movie: result[0]});
        });

    });

表单调用/ find:

<form action="/find" method="post">
    <input type="text" placeholder="title to search" name="title">
    <button type="submit">Search</button>
</form>

我希望能够获得从路径发送的“电影”并将其存储在客户端的对象中。我怎么能这样做? 目标:我想将电影ID发送回服务器,点击删除按钮将其删除。



更新1 我按标题搜索电影,但当我想删除它时,我想使用ID。所以我需要的是解析响应体。但是怎么做?

3 个答案:

答案 0 :(得分:0)

尝试将其作为JSON字符串传递给客户端,然后将变量解析为JSON。

服务器

res.render('movie.ejs', {
    movie: result[0],
    moviejson: JSON.stringify(result[0])
});

客户端

<script>
    var movie_object = JSON.parse('<%= moviejson %>');
    console.log(movie_object);
</script>

答案 1 :(得分:0)

  1. 您展示的路线是POST,它应该是GET,用于在浏览器中显示您的电影数据。
  2. 我假设您要为数据存储中的每条记录分配某种ID?你需要把它放在页面的某个地方。
  3. 您的按钮必须位于模板中的<form>
  4. 您需要JS POST将电影ID返回到处理删除的应用中的POST路线(假设您要使用AJAX,否则只需将方法设置为POST即可您的表单并正确设置操作URL)。
  5. 或使用http DELETE请求将id传递给服务器(这是更加安静的方式)来处理删除。

答案 2 :(得分:0)

你在这里可以做的是:

1)根据电影标题制作可用于渲染页面的路线。

2)创建一个实际作为rest api端点的新路由(用于获取电影详细信息),您可以向该端点发送请求并获取电影的详细信息。

您的节点代码:

app.get('/movie-render-page/:title', function (req, res, next) {
   res.render('movie.ejs');
});

app.get('/movie/:title', function(req,res,next){
     var collection = db.collection('movies');
    collection.find({title: req.params.title}).toArray(function (err, result) {
        res.status.send(result);
    });

});

您的HTML代码:

<script>
     //call '/movie/:title' and you can than bind data to html and use it 
</script>