【问题标题】:responding with a json object in Node js在 Node js 中响应一个 json 对象
【发布时间】:2012-10-24 07:56:21
【问题描述】:

我想在 200 OK 返回一个 Json 对象。

我正在从我的 nosql 获取数据。

我知道如何填充结构。 (即在 json 正文中要保留的值)

这里名称、类别和地址是固定的:

Name= entity[4]
Class= entityclass[4]
Address = entityaddrss[4]

... enity..将来自 nosql。

如何构造和发送带有 json 正文的 200Ok。

response.end({})

你能告诉我最后应该写什么吗?我有所有需要的数据: 名称=实体[4] 类=实体类[4] 地址 = entityaddrss[4]

【问题讨论】:

  • 如果您想要一个好的答案,这需要更多细节。你到底在用什么数据库?您使用什么库与数据库交互?在你的例子中是什么样的数据结构 - 3个变量,一个对象,一个自定义对象?您正在使用什么节点服务器 - 连接或表达?等等等等。
  • 感谢您的回复。我正在使用 Azure 。这里我的问题更多是如何在 200 OK 中将数据发送给用户。我能够得到这些值。我知道如何分配和制作如上所示的 json 主体。我正在寻找的只是我如何构建和发送 200 OK 的值。我的 DB 可能会更改为 mongo..所以不想讨论 DB..假设一切都可用想知道如何在 200 ok 内发送 jason body
  • 你检查过这个相关的问题吗...stackoverflow.com/questions/5892569/…

标签: javascript node.js


【解决方案1】:

好的,既然你在第一条评论中添加了一些细节(你应该编辑问题并添加这些),我想我可以回答你想要的。

var http = require('http')
var port = process.env.PORT || 1337;

var get_nosql_data = function(callback){
  // do whatever it is here you need to get the data back
  // and format it into a json object. pseudocode follows.
  // error handling is also needed here, but not relevant to the answer
  var db = require('db');
  db.getData('some query', function(res){
    var data = { name: res.entity[4], class: res.entityclass[4], address: res.entityaddrss[4] };
    callback(data);
  });
}

http.createServer(function(req, res) {
  get_nosql_data(function(data){
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify(data));
  });
}).listen(port);

只要您将数据库值中的占位符字符串分入其中,您就应该启动并运行。这也应该与 azure 已经为您设置的内容保持一致。

相关,我强烈建议您查看express - 这将使您编写节点网络应用程序的生活变得更加轻松。

【讨论】:

  • 我在这里调用了一个不同的函数,它将联系 nomysql.so 这将不起作用。所以,函数被调用并且在我开始 res.writeHead(200, { .....
  • 我没有看到任何迹象表明http.serverResponse 对象的end 方法会自动将传递的对象序列化为JSON;该对象应首先传递给JSON.stringify()
  • 谢谢@ebohlman,你能告诉我如何传递问题中显示的参数吗?看了一些例子还是没看懂
  • 好电话@ebohlman ,更新了答案。学习者,我还需要更多细节。这将起作用,但除非您提供更多代码,例如获取 nosql 响应的函数,否则我无能为力。我用我对它会如何发生的猜测更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2020-05-05
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多