【问题标题】:Nodejs & Express: How to send multiple Json variable from server to Client through response.send()Nodejs & Express:如何通过 response.send() 从服务器向客户端发送多个 Json 变量
【发布时间】:2021-05-11 14:59:54
【问题描述】:

我正在为itunes-search 开发一个nodejs 搜索应用程序,并使用express framework 从我的本地数据库中搜索一些软件信息。搜索模块通过单个 json 变量返回软件名称、音乐名称等信息。但现在我还需要音乐艺术家详细信息/软件公司名称通过另一个不同的 json 变量。我可以使用下面的代码简单地返回歌曲详细信息。 在客户端:

$scope.search_music_data = function(data)
{
  var data="Hamdoon Soft";//Search my favourite artist name or band name
    $http({'method' : 'post', url: '/search', data: {'search_item' : data}}).
    success(function(data){ 
        $scope.artist_name = data; 
    }).
    error(function(data){ 
    })
    $scope.check = true;
}

以下代码在服务器端:

在 route.js 中

app.post('/search', search.search_music);

目前在 search_music 函数中,此代码正在运行:

ItemName="calculated data Json Data"
var response.send(ItemName);

但我还需要发送另一个计算数据,例如

  ItemName="calculated data Json Data"
  ArtistName="calculated data Json Data"
  var response.send(ItemName, ArtistName);

或ItemName="计算数据Json数据" SoftWareCompnayName="计算数据Json数据" var response.send(ItemName, SoftWareCompnayName); 有可能吗?如果他/她能帮助我,我会非常感激他/她。

【问题讨论】:

    标签: angularjs node.js express itunes-search-api


    【解决方案1】:

    在服务器端代码中使用它。我想这会对你有所帮助。这是从服务器发送到客户端的多个值的示例。

    res.send({artist: artist_details, music: music_details});
    

    在客户端:

    您可以从角度控制器访问它 data.artist 和 data.music。

    【讨论】:

    • 您可能需要在客户端返回 JSON.parse(data) 后才能从对象中访问艺术家和音乐。
    【解决方案2】:

    因此您可以将一个对象传递给 response.send 方法,该对象将包含您的歌曲和艺术家信息。

    var data = {
      song: ..,
      artist: ..
    };
    
    response.send(data);
    

    我尝试了 itunes-search,但是当我开始使用它时它会抛出一个错误,所以我创建了我的 own module,它与 itunes-search 执行相同的任务。

    这是我使用我自己的方法 getSongsAndArtistInfo 的示例,该方法返回一个包含歌曲和艺术家信息属性的对象:

    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    
    var itunes = require('./itunes');
    
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: true}));
    
    app.post('/search', function (req, res) {
      var searchItem = req.body.searchItem;
      itunes.getSongsAndArtistInfo(searchItem, function (err, result) {
        if (err) res.status(404).send(err);
    
        res.send(result);
      });
    });
    
    app.listen(4000, function () {
      console.log('server up and running at 4000 port');
    });
    

    【讨论】:

      【解决方案3】:

      你可以有多个 res.write() 但只能有一个 res.send()...

      res.write("object")
      res.write("object")
      res.send()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-08
        • 2019-01-01
        • 1970-01-01
        • 2016-12-20
        • 1970-01-01
        • 2020-04-16
        • 1970-01-01
        相关资源
        最近更新 更多